#43110:


Chaoray (巧克力內餡貢丸)

學校 : 新北市私立南山高級中學
編號 : 190674
來源 : [114.24.101.230]
最後登入時間 :
2024-10-20 00:47:08
f638. 支點切割 -- APCS201802程式實作題3 | From: [114.24.107.237] | 發表日期 : 2024-10-17 00:21

先假定m = s + 1然後計算題目要求的總和值acc

m = s + 1時,acc = (-1) * p[s] +   0  * p[s + 1] +  1 * p[s + 2] + ...

m = s + 2時,acc = (-2) * p[s] + (-1) * p[s + 1] +  0 * p[s + 2] + ...

可以推出acc在m = s + 2時比m = s + 1少Σp[i], i∈[s, t]

這邊先設sum = Σp[i], i∈[s, t]

如果m = s + 1時算出來的acc <= 0,那切點就是s + 1,因為再減下去絕對值只會更大

而如果acc > 0,那就要計算是acc、acc - sum * n、acc - sum * (n + 1)哪個的絕對值最小

可以得

n = acc / sum

m = s + 1 + n

接著寫幾個if就出來了

別忘了判斷m要在[s+1, t-1]之間

 

 
#43111: Re: 解法


Chaoray (巧克力內餡貢丸)

學校 : 新北市私立南山高級中學
編號 : 190674
來源 : [114.24.101.230]
最後登入時間 :
2024-10-20 00:47:08
f638. 支點切割 -- APCS201802程式實作題3 | From: [114.24.107.237] | 發表日期 : 2024-10-17 00:22

先假定m = s + 1然後計算題目要求的總和值acc

m = s + 1時,acc = (-1) * p[s] +   0  * p[s + 1] +  1 * p[s + 2] + ...

m = s + 2時,acc = (-2) * p[s] + (-1) * p[s + 1] +  0 * p[s + 2] + ...

可以推出acc在m = s + 2時比m = s + 1少Σp[i], i∈[s, t]

這邊先設sum = Σp[i], i∈[s, t]

如果m = s + 1時算出來的acc <= 0,那切點就是s + 1,因為再減下去絕對值只會更大

而如果acc > 0,那就要計算是acc、acc - sum * n、acc - sum * (n + 1)哪個的絕對值最小

可以得

n = acc / sum

m = s + 1 + n

接著寫幾個if就出來了

別忘了判斷m要在[s+1, t-1]之間

 

Σp[i], i∈[s, t]可以用前綴和求出

 
ZeroJudge Forum