https://www.acwing.com/problem/content/124/
据题意所得方程组1,而题意要求为2,2可以全部转化为x1和c数组,c数组全部已知,最后为求一点在到c数组中距离和最小,转化为货舱选址问题。(x数组可以为负,表示减少)
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
typedef long long LL;
int q[N],c[N];
int main()
{
int n; cin>>n;
LL av=0;
for(int i=1;i<=n;i++)
{
cin>>q[i]; av+=q[i];
}
av/=n;
c[1]=0;
for(int i=2;i<=n;i++)
c[i]=c[i-1]+av-q[i-1];
sort(c+1,c+n+1);
LL sum=0;
for(int i=1;i<=n;i++)
sum=sum+abs(c[i]-c[(n+1)/2]);
printf("%lld",sum);
return 0;
}