【bzoj 1045】[HAOI2008] 糖果传递

来源:互联网 发布:淘宝评价好评怎么修改 编辑:程序博客网 时间:2024/05/17 23:31

想了很久一点思路都没有,感谢黄学长:http://hzwer.com/2656.html

很巧妙的证明,尤其是后面的坐标求解

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>#include<cmath>#define maxn 1000020#define LL long longusing namespace std;int n;int c[maxn],a[maxn],ave;LL ans,sum;int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",a+i);sum+=a[i];}ave=sum/n;for(int i=1;i<=n;i++){c[i]=a[i]-ave+c[i-1];}sort(c+1,c+1+n);int mid=c[(n>>1)+1];for(int i=1;i<=n;i++){ans+=abs(c[i]-mid);}printf("%lld",ans);return 0;}


0 0
原创粉丝点击