線性基 模板

2022-05-25 19:24:09 字數 826 閱讀 8795

這裡是連線o(´^`)o

線性基性質:

1.原序列裡面的任意乙個數都可以由線性基裡面的一些數異或得到。

2.線性基裡面的任意一些數異或起來都不能得到0 0

3.線性基裡面的數的個數唯一,並且在保持性質一的前提下,數的個數是最少的

//

#include

#include#include

#include

#include

#include

#include

#include

#include

#include

#define mem(a,b) memset(a,b,sizeof(a))

#define ll long long

#define sl(x) scanf("%lld",&(x))

#define rep(i,a,b) for(int i=a;i<=b;i++)

using

namespace

std;

int p[105

];void insert(int

now)

now^=p[i];}}

}#undef int

intmain()

int ans=0

; per(i,

62,0

)

if((ans^p[i])>ans) ans^=p[i];

cout

<"\n"

;

return0;

}

模板 線性基模板

數學太差,直接線性基當資料結構用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的子集 線性基中每個元素的異或方案唯一,也就是說,線性基中不同的異或組合異或出的數都是不一樣的。線性基的二進位制最高位互不相同。這樣我們先構造出線性基 然後貪心的去搞最大...