BZOJ3033 太鼓達人

2021-08-09 13:55:21 字數 1258 閱讀 2063

標籤:尤拉圖,尤拉迴路

description

鼓的主要元件是m個圍成一圈的感測器。每個感測器都有開和關兩種工作狀態,分別用1和0表示。顯然,從不同的位置出發沿順時針方向連續檢查k個感測器可以得到m個長度為k的01串。vani知道這m個01串應該是互不相同的。而且鼓的設計很精密,m會取到可能的最大值。現在vani已經了解到了k的值,他希望你求出m的值,並給出字典序最小的感測器排布方案。

input

乙個整數k。

output

乙個整數m和乙個二進位制串,由乙個空格分隔。表示可能的最大的m,以及字典序最小的排布方案,字元0表示關,1表示開。你輸出的串的第乙個字和最後乙個字是相鄰的。

sample input

3sample output

8 00010111

hint

得到的8個01串分別是000、001、010、101、011、111、110和100。注意前後是相鄰的。長度為3的二進位制串總共只有8種,所以m = 8一定是可能的最大值。

對於全部測試點,2≤k≤11。

source

poetize2

玄學(可能還是自己太弱了qwq)

第一問亂猜出來,2^k

第二問dfs爆搜尤拉迴路

code

#include#include#include#include#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)

#define dep(i,a,b) for(int i=a;i>=b;i--)

#define mem(x,num) memset(x,num,sizeof x)

#define ll long long

using namespace std;

inline ll read()

while(ch>='0'&&ch<='9')

return x*f;

}const int maxn=3006;

ll vis[maxn],ans[maxn],k,ed,n;

int dfs(int x,int k)

int main()

{ n=read();

printf("%lld ",(ed=1<

BZOJ3033 太鼓達人題解

時間限制 1 sec 記憶體限制 128 mb 鼓的主要元件是m個圍成一圈的感測器。每個感測器都有開和關兩種工作狀態,分別用1和0表示。顯然,從不同的位置出發沿順時針方向連續檢查k個感測器可以得到m個長度為k的01串。vani知道這m個01串應該是互不相同的。而且鼓的設計很精密,m會取到可能的最大值...

刷題 BZOJ 3033 太鼓達人

鼓的主要元件是m個圍成一圈的感測器。每個感測器都有開和關兩種工作狀態,分別用1和0表示。顯然,從不同的位置出發沿順時針方向連續檢查k個感測器可以得到m個長度為k的01串。vani知道這m個01串應該是互不相同的。而且鼓的設計很精密,m會取到可能的最大值。現在vani已經了解到了k的值,他希望你求出m...

bzoj 3033 太鼓達人 尤拉迴路

題意 長m的01環,每個長k的子串都是不同的01串。給出k,求最大的m以及字典序最小的方案。m 2 k 可以把k 1位01串看成點,k位01串就是邊,滿足尤拉迴路的條件。然後求字典序最小的尤拉迴路就行了,優先走字典序小的邊 include include include include includ...