線性基 線性基兩例

2021-10-09 23:24:30 字數 1277 閱讀 2643

線性基兩例

[bjwc2011]元素

貪心,往線性基里插

插得進去有貢獻

#include

using

namespace std;

#define in read()

typedef

long

long ll;

ll in

const

int n=

1e3+5;

int n,ans;

ll d[

100]

;struct node

}a[n]

;bool

insert

(ll x)

}return

false;}

intmain()

printf

("%d\n"

,ans)

;return0;

}

[tjoi2008]彩燈

顯然開關燈是異或運算

整成數,套線性基板子

最後有ans

ansan

s基就有2an

s2^

2ans

方案但是不知道為什麼我線性基memset之後d[60]位置上總是有乙個兩萬多的數

#include

using

namespace std;

#define in read()

typedef

long

long ll;

ll in

const

int mod=

2008

;int n,m,ans;

ll d[60]

;char opt[60]

;void

insert

(ll x)}}

}int

main()

insert

(x);

}for

(int i=

55;i>=0;

--i)

if(d[i]

)++ans;

printf

("%lld\n",(

1ll<%mod)

;return0;

}

另外有一道四川的題

可以參考我的部落格

寫得挺詳細的,線性基小白可以看一下

模板 線性基

難度較大,請勿棄療 給定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...