洛谷P3812 模板 線性基

2022-04-30 06:30:10 字數 925 閱讀 3348

這是一道模板題。

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

輸入格式:

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

接下來一行n個數

輸出格式:

僅一行,表示答案。

輸入樣例#1: 複製

2

1 1

輸出樣例#1: 複製

1

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

首先對這$n$個數建出線性基

然後貪心的選最大就好

線性基。。感覺又開了個天坑

#include#include

#include

#define int long long

using

namespace

std;

const

int maxn = 2 * 1e6 + 10, inf = 1e9 + 10, b = 63

;inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *f;

}int

n;int

p[maxn];

void insert(int

x) x ^=p[i];}}

}int

query()

main()

printf(

"%lld

", query());

}

洛谷 P3812 模板 線性基

這是一道模板題。給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。第一行乙個數n,表示元素個數 接下來一行n個數 僅一行,表示答案。輸入 1 2 1 1輸出 1 11 n 50,0 si 250 1 leq n leq 50,0 leq s i leq 2 1 n 50,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 個數,選取任意個數,使得他們的異或和最大。題解 線性基,原理貪心看不懂。對於每乙個數,設它的最高位的 1 在第 i 位,如果此時 p i 為空,就將這個數加入線性基,否則異或上 p i 繼續找。最後貪心看 ans 異或上線性基的這一位會不會變大,若變大就轉移 卡點 無 c cod...