不知道k的范围,照着数据瞎打了一个1000,没想到一发过了,是数据水还是本身正确
using namespace std;
#define int long long
const int N=1e5+10;
const int MAXN=0x7f7f7f7f7f7f7f7f;
int a[N];
signed main(){
int T;cin>>T;
while(T--){
int n;cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int minn=MAXN;
for(int k=0;k<=1000;k++){
int tot=0;
for(int i=2;i<=n;i++){
int now=a[1]-(i-1)*k;
if(now<a[i]) tot=max(tot,a[i]-now);
}
int ans=tot;
for(int i=2;i<=n;i++){
int now=a[1]+tot-(i-1)*k;
ans+=now-a[i];
}
minn=min(minn,ans);
}
cout<<minn<<endl;
}
return 0;
}