太鼓達人 C組模擬賽

2021-08-21 10:47:52 字數 1006 閱讀 5325

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

很顯然,第一問的答案就是 2^n。

爆搜直接0ms 236kb過

第二問,構造乙個有 2^(n-1)個節點的圖,對應 2^(n-1)個 n-1 位二進位制數。從代表數 k 的節

點(0<=k<2^(n-1))向代表數(k<<1)&(1<<(n-1))的節點,和代表數((k<<1)+1)&(1<<(n-1))的節點

分別連一條邊。可以發現這樣的圖中,所有點的入度和出度都是 2,因此這是乙個尤拉圖。

因此我們從 0 號點開始 dfs 尋找乙個尤拉迴路,回溯的時候記錄到棧中,最後倒序輸出即可。

因為要求字典序最小,dfs 的時候要注意搜尋順序,先走 0 邊,再走 1 邊。這個演算法尋找歐

拉迴路,每個點、每條邊只訪問一次,是 o(v+e)級別的。

時間複雜度 o(2^n),預計得分 100 分。

#include

#include

#include

#include

#define gc getchar()

using

namespace

std;

const

int n=1

<<12;

const

int inf=~0u>>1;

int n,k,t,ans[n],p[n];

void read(int &f)

while(isdigit(c))

f*=d;return;

}void write(int x)

bool dfs(int x,int now,int q)

int main()

3033太鼓達人

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

NOIP2013模擬 太鼓達人

我們可以先將所有的01串按字典序從小到大做出來。我們很容易發現 打表找規律 將全0串放最前面明顯是最優的。所以,我自然而然地想到了貪心。我們先設f i 將01串按上述做好。設m i 為第i次檢查出的01串是f陣列中的第m i 個,dg判斷是否能放入,可以就往下dg。如果方案成立直接輸出。當dg查詢到...

我的太鼓達人2

iphone版的太鼓達人其實還是很不錯的,nds上我也比較習慣用觸控螢幕,而iphone的解析度和電容觸控很適合玩太鼓達人。但是不能玩自製曲目還是有些遺憾。pc上有個 度很高的太鼓次郎,而且們的自製譜面也很多,所以就想先做乙個比較簡單的能應用太鼓次郎譜面的程式在iphone上,資源的話可以直接用ip...