比赛 2026.8.26 评测结果 AAAAATTTTTTTTTTTTTTT
题目名称 merge 最终得分 25
用户昵称 LikableP 运行时间 31.524 s
代码语言 C++ 内存使用 3.72 MiB
提交时间 2026-08-26 12:39:10
显示代码纯文本
#include <cstdio>
#include <vector>
#include <tuple>

int T;
std::vector<std::tuple<int, int, int>> steps;

bool dfs(std::vector<int> vector) {
    int len = vector.size() - 1;
    if (len == 1) return true;
    for (int i = 1; i <= len; ++i) {
        for (int j = i + 1; j <= len; ++j) {
            for (int k = j + 1; k <= len; ++k) {
                if ((vector[i] ^ vector[j] ^ vector[k]) == 0) {
                    int s = 0;
                    for (int l = i; l <= k; ++l) s ^= vector[l];
                    
                    std::vector<int> restore = vector;
                    steps.emplace_back(i, j, k);
                    vector.erase(vector.begin() + i, vector.begin() + k + 1);
                    vector.insert(vector.begin() + i, s);
                    
                    if (dfs(vector)) return true;
                    
                    vector = restore;
                    steps.pop_back();
                }
            }
        }
    }
    return false;
}

int main() {
    freopen("mergeegrem.in", "r", stdin);
    freopen("mergeegrem.out", "w", stdout);
    scanf("%d", &T);
    while (T--) {
        steps.clear();
        
        int n;
        scanf("%d", &n);
        std::vector<int> a(n + 1);
        for (int i = 1; i <= n; ++i) {
            scanf("%d", &a[i]);
        } 
        
        if (n == 1) {
            printf("Huoyu\n0\n");
        } else if (n == 2) {
            printf("Shuiniao\n");
        } else if (n == 3) {
            printf((a[1] ^ a[2] ^ a[3]) == 0 ? "Huoyu\n1\n1 2 3\n" : "Shuiniao\n");
        } else {
            bool ok = dfs(a);
            if (ok) {
                printf("Huoyu\n");
                printf("%llu\n", steps.size());
                for (auto tuple : steps) {
                    printf("%d %d %d\n", std::get<0>(tuple), std::get<1>(tuple), std::get<2>(tuple));
                }
            } else {
                printf("Shuiniao\n");
            }
        }
    }
    return 0;
}