1.题目
2.输入输出案例
输入样例:
4 1 2 5 4
输出样例:
4
3.思路
将问题抽象为数学模型
那么我们的目标就是:
通过限制条件转化为数学公式:
求解方程
上下相消:
依次类推,用x1表示每一个未知数:
朴素化最小值
得到递推式
令cn = a拔 - an
那么:
4.代码
#include <bits/stdc++.h> using namespace std; const int N = 1000010; int a[N],c[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); long long sum = 0; for(int i=1;i<=n;i++) sum+=a[i]; long long avg = sum/n; for(int i=n;i>1;i--) c[i]=c[i+1]+avg-a[i]; long long ans = 0; sort(c+1,c+n+1); for(int i=1;i<=n;i++) ans+=abs(c[i]-c[n/2+1]); cout<<ans; return 0; }