[SDOI 2010]外星千足虫

Posted NaVi_Awson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SDOI 2010]外星千足虫相关的知识,希望对你有一定的参考价值。

Description

题库链接

给出 \\(m\\)\\(n\\) 元的 \\(0,1\\) 方程,即系数非 \\(0\\)\\(1\\) ,方程的结果为奇偶性。

\\(1\\leq n\\leq 1000,1\\leq m\\leq 2000\\)

Solution

类似于 [JLOI 2015]装备购买 ,维护高斯消元的上三角。

由于方程满足异或性质,直接用 \\(bitset\\) 维护即可。

Code

#include <bits/stdc++.h>
using namespace std;
const int N = 1005;

int n, m, tot;
string s;
bitset<N> A[N];

void insert(bitset<N> S) {
    for (int i = 0; i < n; i++)
        if (S[i]) {
            if (A[i].any()) S ^= A[i];
            else {A[i] = S; ++tot; break; }
        }
}
void work() {
    scanf("%d%d", &n, &m);
    if (n > m) {puts("Cannot Determine"); return; }
    for (int i = 1; i <= m; i++) {
        cin >> s; bitset<N> S(s);
        cin >> s; if (s[0] == \'1\') S.flip(n);
        insert(S); if (tot == n) {printf("%d\\n", i); break; }
    }
    if (tot < n) {puts("Cannot Determine"); return; }
    for (int i = n-1; i >= 0; i--)
        for (int j = i-1; j >= 0; j--)
            if (A[j][i]) A[j] ^= A[i];
    for (int i = n-1; i >= 0; i--) puts(A[i][n] ? "?y7M#" : "Earth");
}
int main() {work(); return 0; }

以上是关于[SDOI 2010]外星千足虫的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P2447 [SDOI2010]外星千足虫

[SDOI2010](洛谷P2447 )外星千足虫

[BZOJ1923][Sdoi2010]外星千足虫

[SDOI 2010]外星千足虫

P2447 [SDOI2010]外星千足虫

bzoj 1923 [Sdoi2010]外星千足虫 高斯消元