# Codeforces Round #682 (构造场)

### A

#### AC代码

```#include <iostream>
#include <map>
#include <cmath>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define seteps(N) setprecision(N)
#define lson (ind<<1)
#define rson (ind<<1|1)
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
typedef __int128 lll;
constexpr int N=1e5+10;
constexpr int M=1e6+10;
constexpr int INF=0x3f3f3f3f;
constexpr int mod=1e9+7;
void solve(){
int n;
cin>>n;
rep(i,0,n) cout<<2<<' ';
cout<<endl;
}
int main(){
//IOS;
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}```

### B

#### AC代码

```#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define seteps(N) setprecision(N)
#define lson (ind<<1)
#define rson (ind<<1|1)
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
typedef __int128 lll;
constexpr int N=1e5+10;
constexpr int M=1e6+10;
constexpr int INF=0x3f3f3f3f;
constexpr int mod=1e9+7;
int a[N];
void solve(){
int n;
cin>>n;
set<int> s;
rep(i,0,n) cin>>a[i];
rep(i,0,n) s.insert(a[i]);
cout<<(sz(s)==n ? "No" : "Yes")<<endl;
}
signed main(){
IOS;
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}```

### C

#### AC代码

```#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define seteps(N) setprecision(N)
#define lson (ind<<1)
#define rson (ind<<1|1)
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
typedef __int128 lll;
constexpr int N=105;
constexpr int M=1e6+10;
constexpr int INF=0x3f3f3f3f;
constexpr int mod=1e9+7;
int a[N][N];
void solve(){
int n,m;
cin>>n>>m;
rep(i,0,n){
rep(j,0,m){
cin>>a[i][j];
}
}
rep(i,0,n){
rep(j,0,m){
if((i+j)%2!=a[i][j]%2) a[i][j]++;
}
}
rep(i,0,n){
rep(j,0,m){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
int main(){
IOS;
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}```

### D

#### 思路

1. 1. 1.先考虑 n n n是奇数，是奇数时一定可以实现，因为可以先将数组变成形为 x , x , y , y , y x,x,y,y,y x,x,y,y,y式的数组，即相邻元素两两相同。 由于两个相同的元素异或起来一定为 0 0 0，所以可以将所有元素都变成数组的最后一个值。按照 ( i , i + 1 , i + 2 ) (i,i+1,i+2) (i,i+1,i+2)， ( i + 2 , i + 3 , i + 4 ) (i+2,i+3,i+4) (i+2,i+3,i+4)这样的操作顺序即可将数组变成形为 x , x , y , y , y x,x,y,y,y x,x,y,y,y式的。

2. 2. 2.再考虑 n n n是偶数。先给出结论，当整个数组异或起来为 0 0 0时，才有可能实现。首先，对 a i , a i + 1 , a i + 2 a_{i},a_{i+1},a_{i+2} ai​,ai+1​,ai+2​进行操作并不会影响整个数组的异或值，而偶数个相同的值异或起来一定为 0 0 0，所以只有为 0 0 0的时候才能完成操作。将前 n − 1 n-1 n−1个数字进行第一种情况的操作后，整个数组的值会变成第 n n n个数字，所以按照第一种情况进行操作即可。

#### AC代码

```#include <iostream>
#include <map>
#include <cmath>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define seteps(N) setprecision(N)
#define lson (ind<<1)
#define rson (ind<<1|1)
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
typedef __int128 lll;
constexpr int N=1e5+10;
constexpr int M=1e6+10;
constexpr int INF=0x3f3f3f3f;
constexpr int mod=1e9+7;
int a[N];
struct Range{
int a,b,c;
}range[N];
void solve(){
int n;
cin>>n;
int x=0;
rep(i,0,n) cin>>a[i],x^=a[i];
if(n&1){
int cnt=0;
cout<<"YES"<<endl;
rep(i,0,n-1){
cnt++;
range[cnt].a=i+1;
range[cnt].b=i+2;
range[cnt].c=i+3;
i++;
}
rep(i,0,n){
cnt++;
range[cnt].a=i+1;
range[cnt].b=i+2;
range[cnt].c=n;
i++;
}
cout<<cnt-1<<endl;
rep(i,1,cnt) cout<<range[i].a<<' '<<range[i].b<<' '<<range[i].c<<endl;
}else{
if(x){
cout<<"NO"<<endl;
return;
}
n--;
cout<<"YES"<<endl;
int cnt=0;
rep(i,0,n-1){
cnt++;
range[cnt].a=i+1;
range[cnt].b=i+2;
range[cnt].c=i+3;
i++;
}
rep(i,0,n){
cnt++;
range[cnt].a=i+1;
range[cnt].b=i+2;
range[cnt].c=n;
i++;
}
cout<<cnt-1<<endl;
rep(i,1,cnt) cout<<range[i].a<<' '<<range[i].b<<' '<<range[i].c<<endl;
}
}
int main(){
//IOS;
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
//int t;cin>>t;
//while(t--)
solve();
return 0;
}```

0 条评论

• ### codeforces 1296D（贪心）

有n个怪物，a和b轮流对怪物造成a和b伤害，有k次超能力，超能力可以跳过对方的回合，如果a击败了怪物，则a获得一分，反之亦然。求a能够获得的最大点数

• ### codeforces 1005D（数学）

我们发现，如果连续三位的数都不能被3整除，那么这三位加起来一定可以被整除。所以我们遍历一遍即可。

• ### C++ 11之lambda表达式

版权声明：本文为博主原创文章，转载请注明博客地址： https://blog.csdn.ne...

• ### 线程（三）生产者消费者模型+POSIX信号量

生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯，而通过阻塞队列来进行通讯，所以生产者生产完数据之后不用等待消...

• ### Leetcode题解——830/438

用双指针遍历， i为始指针， j为尾指针，外层为for循环，用于更新始指针 i的值，内层为while循环（连续的计数通常使用while循环），用于更新尾指针 j...