模板 線性基

2022-03-13 05:43:59 字數 1164 閱讀 9590

線性基就是一種可以維護異或和的東西,我還沒太懂它到底有什麼用,但是很好寫,而且思路也很清晰,所以板子還是很簡單的。

題幹:

題目背景

這是一道模板題。

題目描述

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

輸入輸出格式

輸入格式:

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

接下來一行n個數

輸出格式:

僅一行,表示答案。

輸入輸出樣例

輸入樣例#

1: 複製21

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#include

#include

#include

#include

#include

#include

using

namespace

std;

#define duke(i,a,n) for(int i = a;i <= n;i++)

#define lv(i,a,n) for(int i = a;i >= n;i--)

#define clean(a) memset(a,0,sizeof(a))

const

int inf = 1

<< 30

;typedef

long

long

ll;typedef

double

db;template

void read(t &x)

template

void

write(t x)

ll ans,p[

100];

intn;

void

get_num(ll x)

x ^=p[i];

}}int

main()

lv(i,

62,0

)

printf(

"%lld\n

",ans);

return0;

}

模板 線性基模板

數學太差,直接線性基當資料結構用orz 表示數集 1,2 k 1 表示乙個異或集合 可以說是將原數集壓縮 性質 直接抄的orz,雖然也不是特別懂 0 2.線性基的異或集合中每個元素的異或方案唯一,其實這個跟性質1是等價的。3.線性基二進位制最高位互不相同。1,2n 1 1,2n 1 1,2n 1 5...

模板 線性基

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