CF1438D Powerful Ksenia
Powerful Ksenia
Solution
CF 为什么这么喜欢构造题(
首先需要知道一些性质。
- 性质
:数列变化前后全局异或和不发生改变。
这一点很好证明,因为将原来数列中的三个数
- 性质
:
这一性质很重要,如果数列长度是奇数,那么将原数列变成
如果数列长度是偶数,那么根据性质
完整代码
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof a)
//#define int long long
using namespace std;
template<typename T> void read(T &k)
{
k=0;T flag=1;char b=getchar();
while (!isdigit(b)) {flag=(b=='-')?-1:1;b=getchar();}
while (isdigit(b)) {k=k*10+b-48;b=getchar();}
k*=flag;
}
template<typename T> void write(T k) {if (k<0) {putchar('-'),write(-k);return;}if (k>9) write(k/10);putchar(k%10+48);}
template<typename T> void writewith(T k,char c) {write(k);putchar(c);}
const int _SIZE=1e5;
int n,a[_SIZE+5],XorSum=0;
signed main()
{
read(n);
for (int i=1;i<=n;i++) read(a[i]),XorSum^=a[i];
if (n%2==0 && XorSum!=0) {puts("NO");return 0;}
puts("YES");
if (n%2==0) n--;
writewith(n-2,'\n');
for (int i=1;i<n;i+=2)
printf("%d %d %d\n",i,i+1,i+2);
for (int i=1;i<n-2;i+=2)
printf("%d %d %d\n",i,i+1,n);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步