bzoj 1465: 糖果传递
来源:互联网 发布:找不到男朋友 知乎 编辑:程序博客网 时间:2024/06/04 18:38
Description
老师准备了一堆糖果, 恰好n个小朋友可以分到数目一样多的糖果. 老师要n个小朋友去拿糖果, 然后围着圆桌坐好, 第1个小朋友的左边是第n个小朋友, 其他第i个小朋友左边是第i-1个小朋友. 大家坐好后, 老师发现, 有些小朋友抢了很多的糖果, 有的小朋友只得到了一点点糖果, 甚至一颗也没有 , 设第i个小朋友有ai颗糖果. 小朋友们可以选择将一些糖果给他左边的或者右边的小朋友, 通过”糖果传递”最后使得每个小朋友得到的糖果数是一样多的, 假设一颗糖果从一个小朋友传给另一个小朋友的代价是1, 问怎样传递使得所耗的总代价最小.
Input
第一行一个正整数n,表示小朋友的个数. n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数.
Output
输出只有一个数, 表示最小代价.
Sample Input
4
1
2
5
4
1
2
5
4
Sample Output
4
HINT
数据范围
30%的测试数据, n<=1000.
100%的测试数据, n<=1000000.
ai>=0, 保证ai在longint/int范围内, ai的总和在int64/long long范围内.
还是不擅长做这类题目。。
http://www.cnblogs.com/zyfzyf/p/3906116.html
↑这里讲的很清楚
#include<cstdio>#include<algorithm>using namespace std;long long a[1000001];long long c[1000001];inline long long fabs(long long x){ if(x<0) x=-x; return x;}int main(){ long long n; scanf("%lld",&n); long long sum=0,ave; int i; for(i=1;i<=n;i++) { scanf("%lld",&a[i]); sum+=a[i]; } ave=sum/n; c[0]=0; for(i=1;i<=n-1;i++) c[i]=c[i-1]+a[i]-ave; sort(c,c+n); long long mid=c[(n+1)/2]; long long ans=0; for(i=0;i<=n-1;i++) ans+=fabs(mid-c[i]); printf("%lld\n",ans); return 0;}
0 0
- bzoj 1465: 糖果传递
- BZOJ[1465/1045]: 糖果传递
- BZOJ 1045/1465: [HAOI2008] 糖果传递
- 数学题 糖果传递 bzoj
- BZOJ 糖果传递-(数论)
- BZOJ 3293/1465/1045([Cqoi2011]分金币/糖果传递/[HAOI2008] 糖果传递-列方程)
- BZOJ 1045: [HAOI2008] 糖果传递
- bzoj [HAOI2008] 糖果传递 贪心
- bzoj 1045 [HAOI2008] 糖果传递
- 【bzoj 1045】[HAOI2008] 糖果传递
- BZOJ 1045 [HAOI2008] 糖果传递
- 【BZOJ】1045: [HAOI2008] 糖果传递
- BZOJ 1045 [HAOI2008] 糖果传递
- bzoj 1045: [HAOI2008]糖果传递
- BZOJ 1045 [HAOI2008] 糖果传递
- BZOJ-1045 糖果传递 数学+递推
- BZOJ 1045: [HAOI2008] 糖果传递 数学,乱搞
- BZOJ 1045 [HAOI2008] 糖果传递 ……
- cocos2d 发布apk
- SDUT 第12周周赛
- iptables,nftables sucks?
- Math中常用方法
- Ubuntu 拨号上网设置
- bzoj 1465: 糖果传递
- 二分查找
- c# Xml
- 自己
- 有序链表的合并
- 兔子--背景的圆角设置
- Hack Like a Pro: How to Crack Passwords, Part 3 (Using Hashcat)
- nyoj-XX和OO
- HDU_4770 Lights Against Dudely 状压+剪枝