这是这道题我的代码,经过各种调试卡过了数据。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
int a[1000009];
int s;
int ga2(int zj){
int a2;
a2=0;
int gc;
gc=1e16+7;
for(int i=s+1;i<=n;i++){
gc=min(gc,(a[s]+zj-a[i])/(i-s));
}
if(s==n){
gc=0;
}
for(int i=1;i<=n;i++){
a2+=(s-i)*gc+a[s]+zj-a[i];
}
return a2;
}
void _main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
s=0;
for(int i=1;i<=n;i++){
if(a[i]>a[s]){
s=i;
}
}
int a1;
a1=0;
for(int i=1;i<=n;i++){
a1+=a[s]-a[i];
}
int a2;
a2=1e16;
for(int i=0;i<=2000;i++){
a2=min(a2,ga2(i));
}
cout<<min(a1,a2)<<endl;
}
signed main(){
int t;
cin>>t;
while(t--){
_main();
}
return 0;
}
求hack。