题目链接:传送门
比较明了的高斯消元
但是N是1000的
N^3的普通高斯消元过不了
要bitset优化,消元时直接异或一下就好
去掉了一个N的复杂度
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#include <bitset>
#define
using namespace std;
typedef long long ll;
int n, m, p, ans;
char s[A];
bitset<A> a[A];
int main(int argc, char const *argv[]) {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> (s + 1);
for (int j = 1; j <= n; j++) a[i][j] = s[j] - '0';
cin >> (s + 1); a[i][n + 1] = s[1] - '0';
}
for (int i = 1; i <= n; i++) {
int j = p + 1;
while (!a[j][i] and j <= m) j++;
if (j == m + 1) {ans = -1; break;}
else ans = max(ans, j);
p++; swap(a[j], a[p]);
for (int k = 1; k <= m; k++) if (k != p and a[k][i]) a[k] ^= a[p];
}
if (ans == -1) puts("Cannot Determine");
else {
cout << ans << endl;
for (int i = 1; i <= n; i++) if (a[i][n + 1]) puts("?y7M#"); else puts("Earth");
}
}