線性基 學習筆記

2021-09-26 09:25:18 字數 527 閱讀 1857

#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 main()else}}

}int r;//a陣列線性基的大小

for(int i=maxbit-1;i>=0;--i)

//給出k 問k能不能被a陣列異或表示->本質:k能不能被a陣列的線性基異或表示

ll k;

while(scanf("%lld",&k)==1)else

if(k==0)

}if(flag) puts("true");

else puts("false");}}

return 0;

}

要背住優雅的對簡明邏輯的實現

線性基學習筆記

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

線性基 學習筆記

按位計算,如果相同記為0,不同記為1。如果,a b c,c b a 交換律結合律 對於任何數,x x 0,x 0 x 對 於一 段序列a n,異或 和為a1 a2 an 對於一段序列a n,異或和為a 1 a 2 a n 對於一段序列 an 異或和為 a1 a2 an 設t s,所有 這樣的子 集t...

線性基學習筆記

線性基是乙個數的集 合數的集合 數的集合 並且每個序列都擁有至少一 個線性基 至少乙個線性基 至少乙個線性 基,取線性基中若干個數異或起來可以得到原序列中的任何乙個數。1.原序列裡面的任意乙個數都可以由線性基裡面的一些數異或得到 2.線性基裡面的任意一些數異或起來都不能得到0 3.線性基裡面的數的個...