題目大意:輸入第一列給定兩正整數 n 、 m (1 ≦ n ≦ 200000,1 ≦ m ≦ 20000),代表有 n 個房間(排成一個環,並編號為 0 ~ n - 1)以及 m 個任務。接著的一列有 n 個正整數 p0 、 p1 、 …… 、 pn-1 (總和不超過 10 ^ 9),代表這 n 個房間各自擁有的點數。最後一列給定 m 個正整數 q0 、 q1 、 …… 、 qm-1 (總和不超過所有 p 值的總和),代表每個任務各自需要的點數。當在編號 i 的房間只能往編號 (i + 1) mod n 的房間前進。每次抵達一個房間可以獲得該房間之點數(每個任務一開始在的房間不需要「抵達」即可獲得該房間點數)。一開始在編號 0 的房間且從任務 q0 開始,一直往下一個房間移動,直到獲得的點數大於或等於任務所需點數,則此時會停留在蒐集到足夠點數時所在的房間的「下一個房間」(而不是停留在任務完成時的房間)。然後繼續下一個任務。試問, 給定的 m 個任務結束後停留的房間之編號為何?
題目大意:輸入第一列給定兩正整數 n 、 m (1 ≦ n ≦ 200000,1 ≦ m ≦ 20000),代表有 n 個房間(排成一個環,並編號為 0 ~ n - 1)以及 m 個任務。接著的一列有 n 個正整數 p0 、 p1 、 …… 、 pn-1 (總和不超過 10 ^ 9),代表這 n 個房間各自擁有的點數。最後一列給定 m 個正整數 q0 、 q1 、 …… 、 qm-1 (總和不超過所有 p 值的總和),代表每個任務各自需要的點數。當在編號 i 的房間只能往編號 (i + 1) mod n 的房間前進。每次抵達一個房間可以獲得該房間之點數(每個任務一開始在的房間不需要「抵達」即可獲得該房間點數)。一開始在編號 0 的房間且從任務 q0 開始,一直往下一個房間移動,直到獲得的點數大於或等於任務所需點數,則此時會停留在蒐集到足夠點數時所在的房間的「下一個房間」(而不是停留在任務完成時的房間)。然後繼續下一個任務。試問, 給定的 m 個任務結束後停留的房間之編號為何?
個人覺得本題的敘述其實該講的都有敘述出來。
不過順序上我比較喜歡先描述輸入代表的意義、格式以及範圍限制,然後中間用來闡述題目的遊戲規則、求解方式云云。最後才以題目要求作為結尾。
注:如果沒有誤會的話,這應該是節錄於我在巴哈小屋放的解題心得。建議以後引用別人文章時要標記一下出處,以免以後引用他人文章時踩到地雷。