CF1628C题解
【题目链接】
题解思路:
若能找到一个
我们第一行随便赋值
这样就得到了
不过现在还要证明
考虑现在还有一个合法方案
AC Code:
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int a[N][N] , c[N][N];
void solve () {
int n;
cin >> n;
for (int i = 1; i <= n; ++ i)
for (int j = 1; j <= n; ++ j)
cin >> a[i][j];
for (int i = 1; i <= n; ++ i) c[1][i] = 1;//先把c[1][i]初始化成1
for (int i = 1; i <= n; ++ i) c[i][n + 1] = 0;
for (int i = 2; i <= n; ++ i)
for (int j = 1; j <= n; ++ j) {
c[i][j] = c[i - 2][j] ^ c[i - 1][j - 1] ^ c[i - 1][j + 1] ^ 1;
}
int ans = 0;
for (int i = 1; i <= n; ++ i)
for (int j = 1; j <= n; ++ j)
if (c[i][j])
ans ^= a[i][j];
cout << ans << endl;
}
int main() {
int T;
cin >> T;
while (T --) solve();
return 0;
}