洛谷 P3812 模板 線性基

2021-09-25 22:17:25 字數 810 閱讀 2108

這是一道模板題。

給定n個整數(數字可能重複),求在這些數中選取任意個,使得他們的異或和最大。

第一行乙個數n,表示元素個數

接下來一行n個數

僅一行,表示答案。

輸入 #1

2

1 1

輸出 #1

1
1≤n≤50,0≤si≤250 1 \leq n \leq 50, 0 \leq s_i \leq 2 ^ 1≤n≤50,0≤si​≤250

思路:線性基模板。

#include#define ll long long

#define maxn 10005

using namespace std;

int t,n,q;

ll k,tmp;

struct l_b

}flag=1;//可異或得到0

return false;

} ll get_max()//求最大異或值

ll get_min()//求最小異或值

inline void rebuild()//重構 找第k小的前置步驟

ll kth(ll k)//找第k小

void merge(l_b &n2)//把線性基n2 內的元素 逐一插入到線性基n1 中

};int main()

printf("%lld\n",lis.get_max());

return 0;

}

洛谷P3812 模板 線性基

給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。1 leq n leq50,0 leq a i leq 2 顯然重複不重複沒有什麼區別。直接套線性基板子。include using namespace std typedef long long type const int...

洛谷P3812 模板 線性基

這是一道模板題。給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。輸入格式 第一行乙個數n,表示元素個數 接下來一行n個數 輸出格式 僅一行,表示答案。輸入樣例 1 複製2 1 1 輸出樣例 1 複製1 1 leq n leq 50,0 leq s i leq 2 1 n 5...

洛谷P3812 模板 線性基

題目大意 給定 n 個數,選取任意個數,使得他們的異或和最大。題解 線性基,原理貪心看不懂。對於每乙個數,設它的最高位的 1 在第 i 位,如果此時 p i 為空,就將這個數加入線性基,否則異或上 p i 繼續找。最後貪心看 ans 異或上線性基的這一位會不會變大,若變大就轉移 卡點 無 c cod...