比赛 2026.8.26 评测结果 AAAAWWWWWWWWWWWWWWWW
题目名称 merge 最终得分 20
用户昵称 __0w0__ 运行时间 0.228 s
代码语言 C++ 内存使用 8.44 MiB
提交时间 2026-08-26 11:46:09
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a[501],t;
struct DP{
    int z;//num
    bool f;
    int a,b,c;//转移过来的三元组 
}dp[501][501];
inline void output(int f){
    if(!f){
        puts("Shuiniao");
    }else{
        puts("Huoyu");
//        cout<<js<<'\n';
        
    }
}
int main(){//目标复杂:O(TN^3) 
    freopen("mergeegrem.in","r",stdin);
    freopen("mergeegrem.out","w",stdout);
    cin>>t;
    while(t--){//O(TN*6) 
        memset(dp,0,sizeof(dp));
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            dp[i][1].z=a[i];
            dp[i][1].f=1;
        }
        if(n==1){//25pts (1~5)
            puts("Huoyu\n0");
        }else if(n==2){
            puts("Shuiniao");
        }else if(n==3){
            if(a[1]^a[2]^a[3]){
                puts("Shuiniao");
            }else{
                puts("Huoyu\n1\n1 2 3");
            }
        }else if(n==4){
            int y=a[1]^a[2]^a[3]^a[4];
            if(y^a[2]&&y^a[3]){//134 124
                puts("Shuiniao");
            }else{
                puts("Huoyu\n1");
                if(y^a[2])puts("1 2 4");
                else puts("1 3 4");
            }
        }else if(n==5){//125 135 145 (123 345)
            int y=a[1]^a[2]^a[3]^a[4]^a[5],f=0;
            if((y^a[3]^a[4]&&y^a[2]^a[3]&&y^a[2]^a[4])&&y)f=-1;
            if(f==-1){
                puts("Shuiniao");
            }else{
                if(!y){
                    puts("Huoyu\n2");
                    if(y^a[4]^a[5]){
                        puts("3 4 5\n1 2 3");
                    }else{
                        puts("1 2 3\n1 2 3");
                    }
                }else{
                    if(y^a[3]^a[4]==0)puts("1 2 5");
                    else if(y^a[2]^a[3])puts("1 4 5");
                    else puts("1 3 5");
                }
            }
        }else{
//            int cnt=0;
//            for(int l=3;l<=n;l++){
//                for(int i=1;i<=n-l+1;i++){
//                    int j=l+i-1;
//                    for(int m=i+1;m<j;m++){
//                        for(int x=m+1;x<=j;x++){
//                            for(int l2=1;l2<=m-i;l2++){
//                                for(int l3=1;l3<=j-m;l3++)
//                            }
//                            if(dp[i][m-i].z^dp[m][j-m].z^dp[x][j-x+1].z==0){
//                                dp[i][l].f=1;
////                                dp[i][l].z=que(i,j);
//                            }   
//                        }
//                    }
//                }
//            }
//            output(dp[1][n].f);    
            puts("Shuiniao");
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}