TJOI 2008 彩燈 題解

2021-08-30 19:22:37 字數 965 閱讀 8679

題目傳送門

題目大意:有乙個長度為 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 的做法 考慮列舉刪去哪一條邊,假如刪掉當前列舉的邊,那麼整棵樹會被分成兩個部分,然後我們要把這條邊重新找個位...