CF-994-C. MEX Cycle · znzryb
## 思路讲解
我想到一个背景故事,就是说每条龙都想有和自己的朋友不同的涂装,但是编号越大的涂装越贵,龙龙们想用编号比较小的涂装达成这一目的,但是龙龙们不知道怎样组合才好,于是找到了你。
## AC代码
多用构造之方法,少用特判之方法,毕竟是构造题嘛。
[https://codeforces.com/contest/2049/submission/300064440](https://codeforces.com/contest/2049/submission/300064440)
```cpp
#include <iostream>
#include <cstring>
#include <algorithm>
#include <deque>
#include <queue>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <bitset>
#include <iterator>
#include <random>
#include <iomanip>
#include <cctype>
#include <array>
typedef long long ll;
const ll MAXN=static_cast<ll>(2e5)+10;
ll N,X,Y,T;
ll A[MAXN];
inline bool isOriginalFriend(ll x,ll y){
x-=1;
y-=1;
if((x+1)%N==y){
return true;
}else if((x-1)%N==y){
return true;
}
return false;
}
void solve(){
std::cin>>N>>X>>Y;
if(N%2==0){
for(int i=1;i<=N;++i){
A[i]=i%2;
}
}else{
A[1]=2;
for(int i=2;i<=N;++i){
A[i]=(i+1)%2;
}
}
// 无影响,我们使用普通的方法
if(A[X]==A[Y]){
// 有影响,我们要调整
if(N%2==0){
A[X]=2;
}else{
A[X]=2;
for(int i=X+1;i<=X+N-1;++i){
if(i<=N){
A[i]=(i+X%2)%2;
}else{
A[i%N]=(i+X%2)%2;
}
}
}
}
for(int i=1;i<=N;++i){
std::cout<<A[i]<<" ";
}
std::cout<<std::endl;
return;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);std::cout.tie(0);
std::cin>>T;
while (T--) {
solve();
}
return 0;
}
/*
AC https://codeforces.com/contest/2049/submission/300064440
WA https://codeforces.com/contest/2049/submission/300052744
1
5 3 5
2 1 2 1 0 (A[2]=1,但应该是0)
WA https://codeforces.com/contest/2049/submission/300055526
1
5 2 4
1
7 3 7
*/
```
## 心路历程(WA,TLE,MLE……)
WA [https://codeforces.com/contest/2049/submission/300052744](https://codeforces.com/contest/2049/submission/300052744)
1
5 3 5
2 1 2 1 0 (A[2]=1,但应该是0)