BZOJ1923 外星千足蟲(線性基)

2021-08-18 16:09:50 字數 1465 閱讀 1701

bzoj

洛谷第一行是兩個正整數 n, m。 接下來 m行,按順序給出 charles 這m次使用「點足機」的統計結果。每行包含乙個「01」串和乙個數字,用乙個空格隔開。「01」串按位依次表示每只蟲子是否被放入機器:如果第 i 個字元是「0」則代表編號為 i 的蟲子未被放入,「1」則代表已被放入。後面跟的數字是統計的昆蟲足數 mod 2 的結果。 由於 nasa的實驗機器精確無誤,保證前後資料不會自相矛盾。即給定資料一定有解。

在給定資料存在唯一解時有 n+1行,第一行輸出乙個不超過m的正整數k,表明在第k 次統計結束後就可以確定唯一解;接下來 n 行依次回答每只千足蟲的身份,若是奇數條足則輸出「?y7m#」(火星文),偶數條足輸出「earth」。如果輸入資料存在多解,輸出「cannot determine」。 所有輸出均不含引號,輸出時請注意大小寫。

3 5

011 1

110 1

101 0

111 1

010 1

4 earth

?y7m#

earth

對於 20%的資料,滿足 n=m≤20;

對於 40%的資料,滿足 n=m≤500;

對於 70%的資料,滿足 n≤500,m≤1,000;

對於 100%的資料,滿足 n≤1,000,m≤2,000。

和裝備購買差不多啊

只不過把解實數方程換成了異或方程而已

考慮到n

比較大,不能直接暴力線性基 用b

itse

t壓下位就行了

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define rg register

#define max 1111

int n,m,ele;

bool vis[max];

bitset

p[max];

string s;

int ans[max];

void insert(bitset

s) }

}int main()

for(int i=1;i<=m;++i)

}if(eleputs("cannot determine");return

0;} for(int i=n-1;~i;--i)

for(int j=i-1;~j;--j)

if(p[j][i])p[j]^=p[i];

for(int i=n-1;~i;--i)

p[i][n]?puts("?y7m#"):puts("earth");

return

0;}

BZOJ 1923 外星千足蟲(高斯消元)

題意 有n個數字,m次測試。每個數字為0或者1。每次測試選出一些數字出來把他們加起來。現在告訴你每次測試選出的是哪些數字以及他們和的奇偶性。你需要給出到第幾次測量為止就可以判斷出所有n個數字的奇偶性,並輸出每個數字的奇偶性。m次之後還不能判斷輸出無解。思路 其實這就是乙個高斯消元。但是n和m太大會超...

1923 Sdoi2010 外星千足蟲

time limit 10 sec memory limit 64 mb submit 1312 solved 841 submit status discuss 第一行是兩個正整數 n,m。接下來 m行,按順序給出 charles 這m次使用 點足機 的統計結果。每行 包含乙個 01 串和乙個數字...

bzoj1923 Sdoi2010 外星千足蟲

luo2447 依然是異或方程組的高斯消元求解,第一問其實就是在高斯消元過程中訪問到的用作主元的方程組的下標最大值,因為異或方程組是直接找到為當前元的係數為 1 的異或方程作為主元進行消元過程的 第二問就是消元之後各個未知數的取值 普通的高斯消元會收穫tle,但是我們可以使用 bitset 可以優化...