官方题解呢就是这样说的 题意:我们注意到,在本难度中,每次元素只会加1。因此我们可以枚举“减yyy”的次数,然后直接O(1)计算出还需要几次“加1”操作。
至于为什么只枚举减0到n-1次,原因是到i大于等于n时再%n,其*p后一定与前面发生重合,而q*i不断变大,此时肯定不是最优解
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[202020];
signed main(){
int n,p,x,q,y,i;
cin>>n>>p>>x>>q>>y;
int s=0;
for(i=0;i<n;i++)cin>>a[i],s+=a[i];
s%=n;
int mi=1e18;
for(i=0;i<n;i++){
mi=min(mi,((n-(s-i*y)%n+n)%n)%n*p+q*i);
}
cout<<mi;
}