#54857: python解


liu_owo_tw (liu ouo tw)


開一個長度為2n的前綴和(因為最多只會繞一圈)

代表p[0] , p[0]+p[1] , ... , p[0]+...+p[n-1] + p[0] , ... , p[n-1]+p[n-1]

例如p = [1, 2, 3, 4, 5],則前綴和 = [1, 3, 6, 10, 15, 16, 18, 21, 25, 30]

然後用二分搜找出q[0]大於等於前綴和的第幾項(要 % n)

接著在找上一個找到的項再前綴和的數 + q[i]大於等於前綴和的第幾項(要 % n)

(因為完成任務後經驗值要歸零,直接跳到下一格,並直接賺取那一格的經驗)

例如範例測資一前綴和 = [2, 3, 8, 12, 15, 20, 23, 25, 26, 31, 35, 38, 43, 46],q = [8, 9, 12]

就會先找到大於等於8在第(2%7)項

然後再找到大於等於(8+9)在第(5%7)項

最後再找到大於等於(20+12)在第(11%7)項,20是前綴和的第(5%7)項

所以答案就是11 % 7 = 4,但要注意,最後走到的位置的下一格才是答案

所以要print((finish + 1) % n)

程式碼:點我看程式碼

#54858: Re: python解


liu_owo_tw (liu ouo tw)


開一個長度為2n的前綴和(因為最多只會繞一圈)

代表p[0] , p[0]+p[1] , ... , p[0]+...+p[n-1] + p[0] , ... , p[n-1]+p[n-1]

例如p = [1, 2, 3, 4, 5],則前綴和 = [1, 3, 6, 10, 15, 16, 18, 21, 25, 30]

然後用二分搜找出q[0]大於等於前綴和的第幾項(要 % n)

接著在找上一個找到的項再前綴和的數 + q[i]大於等於前綴和的第幾項(要 % n)

(因為完成任務後經驗值要歸零,直接跳到下一格,並直接賺取那一格的經驗)

例如範例測資一前綴和 = [2, 3, 8, 12, 15, 20, 23, 25, 26, 31, 35, 38, 43, 46],q = [8, 9, 12]

就會先找到大於等於8在第(2%7)項

然後再找到大於等於(8+9)在第(5%7)項

最後再找到大於等於(20+12)在第(11%7)項,20是前綴和的第(5%7)項

所以答案就是11 % 7 = 4,但要注意,最後走到的位置的下一格才是答案

所以要print((finish + 1) % n)

程式碼:點我看程式碼


第二行最後打錯了,是p[0] + ... + p[n-1]+ p[0] + ... + p[n-1]

也就是2 * sum(p)