[题解] CF1918G Permutation of Given
Monke_FClBrI · · 题解
你们的构造怎么都这么简单。为什么每次做构造题都会被降智。
设
a = 1 -2 -3 -1 2 3 1 -2 -3 ...
b = -2 -3 -1 2 3 1 -2 ...
但是这样
a = c d e x y ...
b = d ? ? ? y ...
这里
考虑
解得
注意这个只适用于
代码
#include<bits/stdc++.h>
#define wrk(x,y) if(n==x)cout<<y"\n",exit(0)
#define pb push_back
#define SZ(x) (int)(x).size()
using namespace std;
const int N=1e6+5;
int n,a[N],b[]={2,-4,-6,-2,4,6};
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
cin>>n;
wrk(2,"YES\n1 1");
wrk(3,"NO");
wrk(4,"YES\n1 2 -2 -1");
wrk(5,"NO");
wrk(6,"YES\n-2 -1 1 -1 1 2");
wrk(7,"YES\n-5 -4 3 -1 -2 4 1");
for(int i=4;i<=n-3;i++)a[i]=b[i%6];
a[1]=(a[4]+a[5])/2;
a[2]=-a[1];
a[3]=(a[4]-a[5])/2;
a[n]=(a[n-3]+a[n-4])/2;
a[n-1]=-a[n];
a[n-2]=(a[n-3]-a[n-4])/2;
cout<<"YES\n";
for(int i=1;i<=n;i++)cout<<a[i]<<" \n"[i==n];
return 0;
}
(逃