UVA-11300
来源:互联网 发布:ubuntu没有中文输入法 编辑:程序博客网 时间:2024/06/04 18:24
原题:UVA-11300
/*设Ai为每个人初始拥有的金币数量设xi为与左边的人交换金币的数量然后设金币总数为S,所以平均每人获得金币数量为M=S/nAi-xi+(x+1)i=M;A1-x1+x2=M; x2=x1+M-A1A2-x2+x3=M; x3=x2+M-A2=x1+M-A1+M-A2=x1+2M-A1-A2A3-x3+x4=M; x4=x3+M-A3=x1+2M-A1-A2+M-A3=x1+3M-A1-A2-A3...An-xn+x(n+1)=M; x(n+1)=xn+M-An要求x1+x2+x3+...+xn最小,即x1+(x1+M-A1)+(x1+2M-A1-A2)+(x1+3M-A1-A2-A3)+...最小可以运用中位数思想,即在数轴上找到一个点x1到达 0,-(M-A1),-(2M-A1-A2),-(3M-A1-A2-A3)...最小这个点就是中位数*/#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int a[1000002],c[1000002];int main() { int n; while(scanf("%d",&n)==1) { long long sum=0; for(int i=0; i<n; i++) { scanf("%d",&a[i]); sum+=a[i]; } int ave=sum/n; c[0]=0; for(int i=1; i<n; i++) c[i]=c[i-1]-ave+a[i]; sort(c,c+n); long long mid=n/2,t=0,x=c[mid]; for(int i=0;i<n;i++) t+=abs(x-c[i]); printf("%lld\n",t); } return 0;}
0 0
- Uva 11300
- uva 11300
- UVA 11300
- UVA 11300
- uva 11300
- UVA-11300
- uva 11300
- uva 11300
- uva 11300
- UVa 11300
- UVa 11300
- UVA-11300
- UVa 11300
- uva 11300
- Uva 11300 By ACReaper
- uva 11300 中位数
- UVA 11300 <中位数定理>
- UVA - 11300(问题转换)
- Dubbo Failed to save registry store file, cause: Can not lock the registry cache file
- 编程工具
- PAT A1060. Are They Equal (25)
- Linux 定时执行任务命令: at
- Combination Sum II
- UVA-11300
- [Codeforces Round #286 DIV1B (CF506B)] Mr. Kitayuta's Technology
- AngularJS ui.bootstrap.alert 消息
- SQL case 语句的实践
- eclipse设置字体颜色
- bzoj 3630 [JLOI2014]镜面通道 计算几何 网络流
- The dependency `MBProgressHUD` is not used in any concrete target.
- null与undefined
- 新的开始