#35436: 使用前缀和就夠了


qerpzzea@gmail.com (賽希爾 cecill(陳宥穎))

學校 : 高雄市立中正高級中學
編號 : 169400
來源 : [163.32.60.236]
最後登入時間 :
2024-11-06 12:35:37
f581. 3. 圓環出口 -- 2020年7月APCS | From: [36.239.131.211] | 發表日期 : 2023-06-03 13:50

簡單思路

先算前缀和(記得大小為n+1)

把前缀和算出來之後

k=1 //k要在迴圈外,因為每次的起始點不同只有第一次是1

for(int i=0; i<m; i++)

{

添加3個變數tmp,count,minus;

tmp為用來判斷是否大於q[i]

count為加過一輪後的值也就是persum的最後一個元素

minus為扣掉起始點以前的前缀和

 while(tmp<q[i])

{

  tmp=count*persum[n];

  tmp+=persum[k]-minus;

  if(k==n)

  {

  count++; //因為加過一輪了所以count++

   k=1;

  }

  else

  k++;

}

}

最終輸出時答案會是k-1

 
ZeroJudge Forum