bzoj1045 糖果传递

Posted んцγυfёìfのι

tags:

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

真·水题。

环形均分纸牌模板题。

只需求出前缀和,然后取中位数求二重前缀和即可。

技术分享图片
 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 typedef long long LL;
 5 const int N = 1000010;
 6 LL a[N], sum[N];
 7 int main() {
 8     int n;
 9     scanf("%d", &n);
10     for(int i = 1; i <= n; i++) {
11         scanf("%d", &a[i]);
12         sum[i] = sum[i - 1] + a[i];
13     }
14     LL k  = sum[n] / n;
15     for(int i = 1; i <= n; i++) {
16         a[i] -= k;
17         sum[i] = sum[i - 1] + a[i];
18     }
19     sort(sum + 1, sum + n + 1);
20     k = sum[(n + 1) >> 1];
21     LL ans = 0;
22     for(int i = 1; i <= n; i++) {
23         ans += abs(sum[i] - k);
24     }
25     printf("%lld\n", ans);
26     return 0;
27 }
AC代码

哈哈哈,5分钟A掉bz题

以上是关于bzoj1045 糖果传递的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1045: [HAOI2008] 糖果传递

bzoj 1045 [HAOI2008] 糖果传递 排序

BZOJ 1045 糖果传递 题解 递推乱搞就对了

bzoj 1045 糖果传递

bzoj1045: [HAOI2008] 糖果传递(数论)

[bzoj1045] [HAOI2008] 糖果传递