HDU 2894 DeBruijin 數字尤拉

2022-09-17 23:54:22 字數 1239 閱讀 3217

題目大意:旋轉鼓的表面分成m塊扇形,如圖所示(m=8)。圖中陰影區表示用導電材料製成,空白區用絕緣材料製成,終端a、b和c是3(k=3)處接地或不是接地分別用二進位制訊號0或1表示。因此,鼓的位置可用二進位制訊號表示。試問應如何選取這8個扇形的材料使每轉過乙個扇形都得到乙個不同的二進位制訊號,即每轉一周,能得到000到111的8個數。

那我們現在把旋轉鼓的表面分成m塊扇形,每乙份記為0或1,使得任何相繼的k個數的有序組(按同一方向)都不同,對固定的k,m最大可達到多少,並任意輸出符合條件的乙個這樣的有序組。

input

每個case輸入乙個數k (2<=k<=11),表示圖中所示的abc這樣的接地線的數量。

output

每個case輸出m所能達到的最大值 ,並且輸出字典序最小的乙個符合條件的有序組,中間用空格隔開。case間沒有空行。有序組輸出的格式為:00010111(k=3,只輸出乙個週期(0001011100010111……),並且首尾剛好是相接的)。

解題思路:參考鏈結

第一問m達到的最大值為2^k。

第二問就是模擬一下旋轉鼓接地線的旋轉過程,每次旋轉即刪去第乙個數,然後在最後加乙個0(a<<1&((1因為所有數為0到2^k-1,對於任意給定的點a,將它與點a1=a<<1&((1**:

1 #include2 #include3 #include4

#define clr(arr,val) memset(arr,val,sizeof(arr))

5using

namespace

std;

6const

int n=15;7

8int

k,cnt;

9int ans[1

<

10bool vis[1

<

1112

void

init()

1718

void euler(int

st)

26if (!vis[s2]) 31}

3233

intmain()

42for(int i=cnt;i>=k;i--)

45 printf("\n"

);46}47

return0;

48 }

HDU 2894 DeBruijin (尤拉迴路)

題目位址 題意 中文不解釋 思路 第乙個輸出無疑就是2 n,然後複雜的就是輸出序列,下圖就是乙個n為3的時候的情況,因為每次都要旋轉一位,我們可以把這個抽象成乙個節點個數為2 n 1 的圖,對應2 n 1 個n 1位二進位制數,當前的節點代表的是二進位制數字為k,他要連向代表數 k 1 1 incl...

卡特蘭數 hdu1130 hdu1133

題意 給定一棵n個節點的二叉樹,求這棵樹有多少個二叉樹。資料範圍 n 100 思路 n個節點的二叉樹有多種,多種二叉樹裡面又有子樹。當n到達100時,結果是乙個龐大的數字,所以要用到大數。在卡特蘭數的應用裡面,求二叉樹的個數是乙個典型的應用,還有 合法的入棧出棧序列數 多邊形分成三角形的個數 圓括弧...

hdu 水仙花數

problem description 春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的 水仙花數 是指乙個三位數,它的各位數字的立方和等於其本身,比如 153 1 3 5 3 3 3。現在要求輸出所有在m和n範圍內的水仙花數。input 輸入資料有多組,每組佔一行,...