線性基 學習筆記and亂口胡總結

2021-09-19 11:10:58 字數 868 閱讀 9531

還以為是什麼非常高大上的東西花了1h不到就學好了

線性基可以在o(n

logx

)o(nlogx)

o(nlog

x)的時間內計算出n

nn個數的最大異或和(不需要相鄰)。

上述中x

xx表示的最大的數。

定義p [i

]p[i]

p[i]

表示在二進位制下從最高位開始第乙個出現1

11的數。

當前我們將乙個數插入線性基中。

如果x

xx的最高位的1

11還沒有被插入過,那麼就在這一位上插入xxx。

如果沒有被插入過,那麼就異或上這一位上的數。

查詢操作:從最高位上開始貪心。

如果異或這一位上的數可以讓答案更大,那麼就異或,否則就異或。

因為我們從高位往低位貪心,所以不需要考慮低位上的數會讓高位上的數變小的情況。

介於我們在插入的時候都是無法匹配的時候,異或上這一位上的數,那麼就保證了我們的這個數能夠達到自己能用的最大貢獻。

【洛谷模板區】

#include

using

namespace std;

const

int bit =63;

const

int n =52;

typedef

long

long ll;

ll a[n]

, p[bit +2]

;int n;

void

ins(ll x)

x ^= p[i];}

}int

main()

線性基學習筆記 模板總結

引入 一組線性無關的向量可以作為一組基底,用這個基底可以表示空間中的全部向量,而且這個基地的個數是確定的,他們線性無關,加入空間中的其他向量之後,就變得線性相關了。線性基 考慮這樣的線性基性質 模擬我們前面關於基的介紹 性質一 首先線性基是如何構造的呢?我們設有乙個陣列d,表示序列a的線性基,下標從...

線性基學習筆記

線性基是幹嘛的呢?給定n個數,求所有數的異或和最大是多少?求解這類問題的時候,就需要線性基了 個人感覺線性基本身就一種貪心。首先定義ba se i bas e i 表示最高位1在i位的數是什麼 對於新進來的數tm p tmp 我們先找出他最高位上的1,假設為第 j j 位,然後看一下ba se j ...

線性基 學習筆記

includeusing namespace std using ll long long const int maxn 5e5 5 原來的數 const int maxbit 63 ll a maxn 原來的數 ll p maxbit p j 第j位為最高位1的數 最高位1在第j位的數 int m...