问题
分析
这一题就按照白书上的习题讲解来做就行了,写下来是为了提醒自己可以靠列方程,然后化简方程将一个问题变得很简单,真的很巧妙
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn=1000000+5;
int n;
long long c[maxn],t;
int main(void){
while(scanf("%d",&n)==1){
c[0]=0;
for(int i=1;i<=n;++i){
scanf("%lld",&t);
c[i]=t+c[i-1];
}
long long m=c[n]/n;
for(int i=1;i<=n;++i) c[i]-=i*m;
sort(c,c+n);
long long x=c[n/2],ans=0;
for(int i=0;i<n;++i) ans+=abs(x-c[i]);
printf("%lld\n",ans);
}
}