Codeforces Round #666 (Div. 2) C - Multiples of Length (思维,构造)

tech2025-08-22  4

这道题首先我们可以把这个数组中的每一个元素都变成n的倍数,然后一起消除就可以了

然后我们选择n - 1这个点,把前n - 1个数字都加上(n - 1)* a[i],这样每一位数字都变成了n * a[i],也就是a[i] 的n倍,最后的a[n]因为长度为1,所以也加上(n - 1)* a[n],最后整体减去n * a[i]即可

注意两点

n == 1的时候需要特判 n * a[I]可能会爆int,需要用1ll * 来处理 #define int ll int a[MX]; void solve() { int n;cin>>n; rpp(i,n) cin>>a[i]; if(n==1) { cout<<"1 1\n"; cout<<a[1]<<endl; cout<<"1 1\n"; cout<<a[1]<<endl; cout<<"1 1\n"; cout<<-3*a[1]<<endl; } else { cout<<1<<" "<<n-1<<endl; rpp(i,n-1) cout<<a[i]*1ll*(n-1)<<" "; cout<<endl; cout<<n<<" "<<n<<endl; cout<<(n-1)*1ll*a[n]<<endl; cout<<1<<" "<<n<<endl; rpp(i,n) cout<<-a[i]*1ll*n<<" "; cout<<endl; } }
最新回复(0)