線性基兩例
例[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...