可以看成点集{a[i]-i}和b之间距离的和,于是找到中位数就可以直接算了2333.
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=200005;
int a[N],n,num;
ll ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",a+i),a[i]-=i;
sort(a+1,a+n+1),num=a[(n+1)>>1];
for(int i=1;i<=n;i++) ans+=(ll)abs(num-a[i]);
cout<<ans<<endl;
return 0;
}
ARC-100 C - Linear Approximation
原文:https://www.cnblogs.com/JYYHH/p/9252153.html