| 比赛 |
2026.8.26 |
评测结果 |
RRRMMMRMMRRRMMMMRRRM |
| 题目名称 |
merge |
最终得分 |
0 |
| 用户昵称 |
郑霁桓 |
运行时间 |
2.979 s |
| 代码语言 |
C++ |
内存使用 |
1.94 MiB |
| 提交时间 |
2026-08-26 12:51:22 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,n,a[500005],b[500005],vs[550];
struct vv{
int a1,a2,a3;
};
vector<vv>v;
inline bool dfs(int x){
if(x==1) return true;
if(x==2) return false;
for(int i=1;i<=x;i++){
vs[a[i+1]]=i+1;
int ps=a[i]^a[i+1];
for(int j=i+2;j<=x;j++){
ps^=a[j];
if(vs[a[i]^a[j]]){
v.push_back({i,vs[a[i]^a[j]],j});
a[i]=ps;
for(int k=i+1;k<=n-(j-i);k++) a[k]=a[j+k-i];
if(dfs(x-(j-i))) return true;
for(int k=i;k<=n-(j-i);k++) a[k]=b[k];
v.pop_back();
}
vs[a[j]]=j;
}
for(int j=i+1;j<=x;j++) vs[a[j]]=0;
}
return false;
}
int main(){
freopen("mergeegrem.in","r",stdin);
freopen("mergeegrem.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>T;
while(T--){
cin>>n;
v.clear();
for(int i=0;i<=512;i++) vs[i]=0;
for(int i=1;i<=n;i++) cin>>a[i];
if(n>20||!dfs(n)) cout<<"Shuiniao\n";
else{
cout<<"Huoyu\n";
cout<<v.size()<<"\n";
for(int i=0;i<v.size();i++) cout<<v[i].a1<<" "<<v[i].a2<<" "<<v[i].a3<<"\n";
cout<"\n";
}
}
return 0;
}