求此做法正确性
查看原帖
求此做法正确性
235901
Always_Remember_It楼主2023/12/16 22:55

不知道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;
}
2023/12/16 22:55
加载中...