linearBasis(線性基) 模板

2021-09-09 06:52:16 字數 651 閱讀 6441

線性基最基本的應用,就是子集最大異或和問題:

【非顯式構造】不顯式構造出集合 bb,支援動態插入。

struct linearbasis

linearbasis(long long *x, int n)

void insert(long long t)}}

// 陣列 x 表示集合 s,下標範圍 [1...n]

void build(long long *x, int n)

}long long querymax()

void mergefrom(const linearbasis &other)

static linearbasis merge(const linearbasis &a, const linearbasis &b)

};

【顯式構造】顯式構造出集合 bb(**中的 vv),不支援動態插入

struct linearbasis}}

v.clear();

for (int i = 0; i <= maxl; i++) if (a[i]) v.push_back(a[i]);

}long long querymax()

};

模板 線性基

難度較大,請勿棄療 給定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的子集 線性基中每個元素的異或方案唯一,也就是說,線性基中不同的異或組合異或出的數都是不一樣的。線性基的二進位制最高位互不相同。這樣我們先構造出線性基 然後貪心的去搞最大...

線性基講解

1 線性基 若干數的線性基是一組數a1 a2,a na1,a2,an 其中axax 的最高位的11 在第xx位。通過線性基中元素xo rxor 出的數的值域與原來的數xo rxor 出數的值域相同。2 線性基的構造法 對每乙個數pp 從高位到低位掃,掃到第xx 位為11時,若ax ax不存在,則ax...