P2512 糖果传递(贪心)(施工中)

Posted shuitiangong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2512 糖果传递(贪心)(施工中)相关的知识,希望对你有一定的参考价值。

题目链接

解题思路

??这一题相当于环形的均分纸牌,需要用到均分纸牌的思路。
??在均分纸牌这题中,我们可以从最左边的一堆或者最右边的一堆开始,递推出所有牌堆需要传递的次数,设每传一张牌的代价为1,那么把(x_i)累加起来就是全部均分的代价。
??而对于本题,因为要面对的是一个环,所以暴力做法是我们可以从任意一人开始递推,推完n个人结束,结果就是n种结果中的最小值。但是,这种O(n^2)的做法显然是不行的,于是就有了神仙们的数学推导解法,因为公式太长了所以这里就不写公式了,对于推导感兴趣的看其他的博客吧(逃~~~

代码

const int maxn = 1e6+10;
ll a[maxn], sumc[maxn];
int main() {
    int n; ll ave = 0; scanf("%d",&n);
    for (int i = 1; i<=n; ++i) {
        scanf("%d",&a[i]);
        ave += a[i];
    }
    ave /= n;
    for (int i = 1; i<=n; ++i) sumc[i] = sumc[i-1]+a[i]-ave;
    sort(sumc+1,sumc+n+1);
    ll ans = 0;
    for (int i = 1; i<=n; ++i) ans += abs(sumc[i]-sumc[(n+1)/2]);
    printf("%lld
",ans);
    return 0;
}


以上是关于P2512 糖果传递(贪心)(施工中)的主要内容,如果未能解决你的问题,请参考以下文章

P2512 [HAOI2008]糖果传递

P2512 [HAOI2008]糖果传递 题解 数学

[bzoj1045][洛谷P2512][HAOI2008] 糖果传递

P2512 [HAOI2008]糖果传递

P2512 [HAOI2008]糖果传递 & P4016 负载平衡问题

P2512 [HAOI2008]糖果传递&&P3156 [CQOI2011]分金币&&P4016 负载平衡问题