題目傳送門
題目大意:有乙個長度為 n
nn 的序列,一開始全都是 0
00,有 m
mm 種操作,每個操作可以將序列裡的一些位置翻轉(0
00 變 1
11,1
11 變 0
00),問通過這 m
mm 種操作,可以將序列變成多少種樣子。
要想到,既然每一種操作形如乙個 01
0101
串,那麼每進行一次該操作,就相當於將序列異或上這個操作。因為這些 01
0101
串的長度都只有n
nn,假如轉化成 10
1010
進製的話,lon
glon
glong~long
longlo
ng是可以存的下的,那問題就變成了:有 m
mm 個數,問能異或出多少個不同的數。
顯然,這個就是線性基的模板題了。
構造出這 m
mm 個數的線性基,設線性基中包含 k
kk 個元素,那麼 2
k2^k
2k便是答案。
**如下:
#include
#include
#define ll long long
int n,m;
ll d[60]
;char s[60]
;void
add(ll x)
else x^
=d[i];}
}}intmain()
int ans=0;
for(
int i=
0;i<=
50;i++)if
(d[i]!=0
)ans++
;printf
("%lld",(
1ll<%2008);
}
洛谷3857 TJOI2008 彩燈
已知一組彩燈是由一排n個獨立的燈泡構成的,並且有m個開關控制它們。從數學的角度看,這一排彩燈的任何乙個彩燈只有亮與不亮兩個狀態,所以共有2n個樣式。由於技術上的問題,peter設計的每個開關控制的彩燈沒有什麼規律,當乙個開關被按下的時候,它會把所有它控制的彩燈改變狀態 即亮變成不亮,不亮變成亮 假如...
洛谷3857 TJOI2008 彩燈
線性基入門 給你乙個數列n個數字,構造乙個線性基出來。對於原數列任意乙個數字,都可通過選取線性基中若干數字xor運算得到。兩個公式 1 如果a b c 0,則a b c,如果乙個數字c沒有加入到線性基中,說明已存在a,b,且a b c 2 如果a b c,則a c b.構造程式如下 includeu...
TJOI 2017 城市 題解
題目傳送門 題目大意 給一棵邊帶權的樹,你可以將一條邊換個位置,換完之後還得是一棵樹,要求換完之後樹的直徑最小。o n o n o n 做法太強了,只能想到 o n 2 o n 2 o n2 的做法 考慮列舉刪去哪一條邊,假如刪掉當前列舉的邊,那麼整棵樹會被分成兩個部分,然後我們要把這條邊重新找個位...