5 条题解

  • 1
    @ 2025-2-12 11:35:49

    Code

    #include <bits/stdc++.h>
    
    using i64 = long long;
    
    constexpr int N = 1e5 + 5, LOG = 16;
    
    int T, n, h;
    int f[N][LOG << 1], g[LOG];
    
    void solve() {
    	std::cin >> h; n = (1 << h) - 1;
    	for (int u = 1; u <= n; u++) for (int k = 1; k <= 2 * h - 2; k++) std::cin >> f[u][k];
    	for (int k = 1; k < h; k++) {
    		g[k] = 0;
    		for (int u = 1; u <= n; u++) g[k] ^= f[u][k + 1];
    	}
    	for (int u = 1; u <= n; u++) {
    		bool ok = true;
    		for (int k = 1; k < h; k++) ok &= (g[k] == f[u][k]);
    		for (int k = h; k <= 2 * h - 2; k++) ok &= (f[u][k] == 0);
    		if (ok) {
    			int v1 = (u == 1 ? 2 : 1), all = 0;
    			for (int v2 = 1; v2 <= n; v2++) if (v1 != v2) {
    				all = 0;
    				for (int k = 1; k <= 2 * h - 2; k += 2) all ^= f[v1][k] ^ f[v2][k];
    				if (all != 0) break;
    			}
    			int w = all;
    			for (int k = 1; k < h; k++) w ^= f[u][k];
    			return std::cout << u << " " << w << "\n", void();
    		}
    	}
    }
    
    int main() {
    
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(nullptr);
    
    	std::cin >> T;
    	while (T--) solve();
    
    	return 0;
    }
    

    求点赞~~~

    信息

    ID
    31
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    247
    已通过
    21
    上传者