題解 外星千足蟲 線性基 高斯消元

2021-08-28 12:59:05 字數 1077 閱讀 1133

luogu題目傳送門

首先需要知道這是個異或方程對吧

然後既然看到位運算,又有這麼多,就可以考慮線性基(做題技巧),那我們就丟進去

接下來看一看線性基,哇,性質美妙

它不就是gauss消元裡面想要的上三角矩陣嗎

所以說:

那真是美妙啊。。。

所以怎麼消元呢?這可是個異或方程,我們要解出來啊

列舉整個線性基的g[i]

如果g[i][j]這一位上為1,是不是就有乙個未知數!

(注意這是個異或方程)

我們的線性基在g[j][j]上是一定會有數的對吧

那我們直接給g[i]異或一下g[j]不就消掉了!!!

直到列舉玩整個g[i],剩下的y(輸入的那個"等號右邊"的)如果為0就是地球了,為1就是外星了(單數隻腳。。。)

#include#include#include#include#include#include#include#include#include#include#include#include#define lst long long

#define ldb long double

#define n 2050

using namespace std;

const int inf=1e9;

int read()

while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();

return m?-s:s;

}int m,n,done;

bitsetf[n],g[n];

void insert(int now)//線性基插入

f[now]^=g[j];}}

}void gauss()//高斯消元

}int main()

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

}if(done!=n)

gauss();

return 0;

}

yeh!!!

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

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

SDOI2010 外星千足蟲(高斯消元)

高斯消元裸題。方法一 暴力,o 2 n 20分 方法二 直接gauss,加點玄學技巧搞得好的話70分 方法三 使用bitset優化,複雜度 o frac 不會的同學看一下 吧,跟裸gauss差不多.只不過消元地方用異或消 真的是 一看就懂了呢.1 include2 include3 include4...

BZOJ1923 外星千足蟲(線性基)

bzoj 洛谷第一行是兩個正整數 n,m。接下來 m行,按順序給出 charles 這m次使用 點足機 的統計結果。每行包含乙個 01 串和乙個數字,用乙個空格隔開。01 串按位依次表示每只蟲子是否被放入機器 如果第 i 個字元是 0 則代表編號為 i 的蟲子未被放入,1 則代表已被放入。後面跟的數...