線性基的用處
①:洛谷p3812
②:牛客練習賽26d
參考部落格:
這位童鞋寫得很好~
求異或最大值
#include
"bits/stdc++.h"
using namespace std;
typedef
long
long ll;
const
int maxn=
1e5+5;
const
int mod=
1e9+7;
const
int bit=62;
ll line[bit+5]
;void
insert
(ll x)
else x^
=line[j]
;//還有這裡,是把進來的數x的這一位異或掉}}
}ll getmax()
return res;
}int
main()
cout<<
getmax()
<}}
①:就是求異或和最大
②:就是求這個只含01的方陣的秩
比如牛客上面的這道題:牛客練習賽49 e 筱瑪愛遊戲就是轉換成線性基來做
模板 線性基模板
數學太差,直接線性基當資料結構用orz 表示數集 1,2 k 1 表示乙個異或集合 可以說是將原數集壓縮 性質 直接抄的orz,雖然也不是特別懂 0 2.線性基的異或集合中每個元素的異或方案唯一,其實這個跟性質1是等價的。3.線性基二進位制最高位互不相同。1,2n 1 1,2n 1 1,2n 1 5...
模板 線性基
難度較大,請勿棄療 給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。n 50sample input33 21sample output 3看上去莫名其妙地想貪心。給些定義 s 為無符號整數集 即s n 記為 xor sum s x or s um s s1 s2 s s ...
模板 線性基
給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。線性基模板可解決 將n個整數看做集合a 線性基即為集合a的子集 線性基中每個元素的異或方案唯一,也就是說,線性基中不同的異或組合異或出的數都是不一樣的。線性基的二進位制最高位互不相同。這樣我們先構造出線性基 然後貪心的去搞最大...