概述
思维题
任意连续n个值的差小于等于1
容易想到分成两个区间,然后奇数时候一区间比二区间大一
偶数相反,然后枚举所有区间
时间复杂度O(n)
ll a[400005];
int n;
map<ll,int>mp1;
void solve()
{
cin>>n;
int cnt=0;
ll num=0;
for(int i=1;i<=n;i++){
if(i&1){
a[i]=++cnt;
a[n+i]=++cnt;
a[2*n+i]=a[i];
a[3*n+i]=a[n+i];
}else{
a[n+i]=++cnt;
a[i]=++cnt;
a[2*n+i]=a[i];
a[3*n+i]=a[n+i];
}
num+=a[i];
}
int k=0;
if(!mp1[num]){
k++;
mp1[num]=1;
}
for(int i=n+1;i<=4*n;i++){
num-=a[i-n];
num+=a[i];
if(!mp1[num])
k++,mp1[num]=1;
}
if(k>2){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
for(int i=1;i<=2*n;i++){
cout<<a[i]<<' ';
}
}
}
最后
以上就是哭泣蜜蜂为你收集整理的CodeForces 1253C的全部内容,希望文章能够帮你解决CodeForces 1253C所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复