【前缀和】糖果均摊
/ / 点击 / 阅读耗时 3 分钟原题
思路
有两种思考方式:
通过均分纸牌问题迁移
均分纸牌问题是本题的一个简化版,非环情况。对于非环情况,容易发现,最值就是$\sum{i=1}^{M}|i\times avg-G[i]|$,其中$avg$是所有数的均值(下同),$G[i]$是前缀和。为了简化问题,我们将原先的前缀和$G[i]$预处理为$S[i]=G[i]-i\times avg$(也就是每一个数字减去均值),那么最小值就是$\sum{i=1}^{M}|S[i]|$。
对于环形情况,一个自然的想法是通过断开环来构造一个最值情况。问题变成是否存在两个点,他们之间没有发生纸牌的传递,这里的证明我没有想清楚,但是可以猜测,必然存在一组最优解满足该约束。那么,我们便可以将环从这样的两个点之间断开,从而原问题变成了一个均分纸牌问题。
当我们从$k$处断开环时,断开之后的环如下(其中$A[i]$是原先的数字减去$avg$之后的值):
显然,$S[M]=0$,故而所求的最值就是$\sum_{i=1}^{M}|S[i]-S[k]|$,显然最值当$S[k]$为中位数时取得。
解方程组
该题解来自于csdn:
代码
实现
1 |
|
感谢阅读!欢迎评论嗷~