题解 | #附加题#
附加题
https://www.nowcoder.com/practice/58b04ed2865f4ff4921290f1bd4ee486
package main import ( "fmt" ) func main() { a := 0 fmt.Scan(&a) arr := make([]int, a+1) for i := 0; i < a; i++ { fmt.Scan(&arr[i]) arr[i]-- } fmt.Printf("%v", answer(arr)) } func answer(a []int) int { rooms := len(a) dp := make([]int, rooms) for i := 0; i < rooms-1; i++ { dp[i+1] = (dp[i]*2 - dp[a[i]] + 1000000009) % 1000000007 } return dp[rooms-1] }