bzoj
luogu
給你\(m\)個\(n\)元異或方程,方程是乙個乙個給的,問你給到第幾個的時候出解,或者是在得到\(m\)個方程後仍不能確定解。保證方程不會前後矛盾,即不會出現無解。
我今天突然發現異或方程組的高斯消元和線性基就是乙個東西。
這道題其實就是問你什麼時候你可以得到\(n\)個線性無關方程。
所以你可以把每個方程組類似線性基那樣插入,每次取異或。
一旦得到\(n\)個線性無關方程(而且已經滿足下三角全是\(0\)),就可以直接自下而上回代了。
複雜度\(o(n^3)\),寫個\(bitset\)可以優化到\(o(\frac)\)。
二分答案的那個\(\log\)實際上是不需要的。
#include#include#include#includeusing namespace std;
int gi()
const int n = 1005;
int n,m,ele,sol[n];
char s[n];
bitseta[n],tmp;
int main()
tmp^=a[i];
} if (ele==n)
for (int i=1;i<=n;++i) puts(sol[i]?"?y7m#":"earth");
return 0;
} }puts("cannot determine");return 0;
}
bzoj1923 Sdoi2010 外星千足蟲
luo2447 依然是異或方程組的高斯消元求解,第一問其實就是在高斯消元過程中訪問到的用作主元的方程組的下標最大值,因為異或方程組是直接找到為當前元的係數為 1 的異或方程作為主元進行消元過程的 第二問就是消元之後各個未知數的取值 普通的高斯消元會收穫tle,但是我們可以使用 bitset 可以優化...
BZOJ 1923 Sdoi2010 外星千足蟲
bzoj 1923 sdoi2010 外星千足蟲 高斯消元 第一行是兩個正整數 n,m。接下來 m行,按順序給出 charles 這m次使用 點足機 的統計結果。每行 包含乙個 01 串和乙個數字,用乙個空格隔開。01 串按位依次表示每只蟲 子是否被放入機器 如果第 i 個字元是 0 則代表編號為 ...
bzoj1923 Sdoi2010 外星千足蟲
題目描述 題解 高消解異或方程組板子題。如果消元結束後剩餘方程 係數一定都為 0 的結果不為 0 那麼無解 但是這道題保證有解 如果存在自由元 即消掉幾個元後剩餘方程內該項係數都為 0 那麼多解。include include include include using namespace std ...