hiho 1182 尤拉路 三

2022-05-29 04:00:13 字數 2270 閱讀 9396

小ho:是這樣的,每次轉動乙個區域不是相當於原來數字去掉最左邊一位,並在最後加上1或者0麼。

於是我考慮對於"xyyy",它轉動之後可以變成"yyy0"或者"yyy1"。我就將所有的數字0~2^n-1看作2^n個點,連線所有的("xyyy","yyy0"),("xyyy","yyy1")。

比如當n=3時,我得到了這樣乙個圖:

我要做的就是找一條路徑,從乙個點出發,走過所有的點後,再回到起點。但是我發現好像很難的樣子。

小hi:那當然了。你這樣構造出來的路徑叫做哈密頓迴路,不是那麼容易可以求解的。

小ho:哎??那我應該怎麼做。

小hi:其實你的想法是沒問題的,但是需要進行一下變換。在你的構圖中我們是用點來表示數字,所以需要經過每乙個點。如果我們用邊來表示每乙個數字呢?

小ho:怎麼用邊表示數字?

小hi:其實也很簡單,比如說數字"10011",分別刪掉它第乙個數字和最後乙個數字,得到"1001","0011"。然後我們連線一條從"1001"到"0011"的有向邊,表示數字"10011"。則我們可以得到構圖的方法:

對於n,我們構造乙個包含2^(n-1)個點和2^n條邊的圖,點的編號從0到2^(n-1)-1。編號為i的點表示數字i。對於任意兩個點,如果點i,點j滿足點i的後n-2個數字和點j的前n-2個數字相同,則我們連線有向邊(i,j)。而邊(i,j)表示了數字((i << 1)+(j & 1))。比如對於n=3的時候,我們可以得到:

可以很容易證明對於任意不同邊(i,j),其表示的數字一定不同。

小ho:這樣構圖話,只要找到一條尤拉迴路就可以了。但是一定會有尤拉迴路麼?

小hi:當然能了,對於有向圖,其存在尤拉路的條件是,至多有兩個點的入度不等於出度,且這兩個點滿足:其中乙個點入度比出度多1,另乙個點出度比入度多1。

若所有點的入度都等於出度,則一定存在尤拉迴路。這可以通過和無向圖尤拉路同樣的方法進行構造證明。

而我們構造的圖,由構造方法可以知道對於任意乙個點,其入度一定為2,出度一定為2。所以它必定存在尤拉迴路。

在有向圖中找尤拉路的方法,也仍然可以使用fleury演算法。寫成偽**的話:

dfs(u):

while (以u為起點,且未被刪除的邊e(u,v))

刪除邊e(u,v)

dfs(v)

endpathsize ← pathsize + 1

path[ pathsize ] ← u

但是,有一點要注意,在使用fleury演算法計算有向圖的尤拉路時,我們需要將path倒序輸出才能得到正確的路徑。

小ho:那找到尤拉迴路之後呢?

小hi:找到尤拉迴路之後只要對該條尤拉迴路進行拼接就可以得到我們目標的圓盤狀態了。

小ho:好,我大概明白了。我這就來試試!

題目分析:

提示中說的很清楚: 好好看看上面的講解。 很聰明的地方是把圖一變成了圖二(圖二也就是用邊表示n位二進位制可以表示的所有數。n=3時, 是0~7),節省了空間。  如果存在乙個尤拉迴路, 也就是存在一條路徑每條邊都走過並且只走一遍, 最後回到原點, 那麼就可以說這個轉盤可以表示n位二進位制可以表示的所有數。用fleury求路徑, 邊球路徑邊記錄,fleury不明白點這裡

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

int n, top, key, final[40000], ans[40000

];vector

vec[17000

];void init()//

初始化把所有邊標記出來

}void dfs(intx)}

void fleury(int

x)

else

//該點x沒有其他的邊可以先走了(即不可擴充套件), 那麼就用final記錄下來

}}int

main()

cout

<

}return0;

}

每日一題之 hiho1182 尤拉路三

描述 小hi和小ho破解了一道又一道難題,終於來到了最後一關。只要開啟眼前的寶箱就可以通關這個遊戲了。寶箱被一種奇怪的機關鎖住 這個機關是乙個圓環,一共有2 n個區域,每個區域都可以改變顏色,在黑白兩種顏色之間切換。小ho控制主角在周圍探索了一下,果然又發現了乙個紙片 機關黑色的部分表示為1,白色的...

HIHOCODER 1182 尤拉路 三

小hi和小ho破解了一道又一道難題,終於來到了最後一關。只要開啟眼前的寶箱就可以通關這個遊戲了。寶箱被一種奇怪的機關鎖住 這個機關是乙個圓環,一共有2 n個區域,每個區域都可以改變顏色,在黑白兩種顏色之間切換。小ho控制主角在周圍探索了一下,果然又發現了乙個紙片 機關黑色的部分表示為1,白色的部分表...

hiho 1176 尤拉路 一

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi和小ho最近在玩乙個解密類的遊戲,他們需要控制角色在一片原始叢林裡面探險,收集道具,並找到最後的寶藏。現在他們控制的角色來到了乙個很大的湖邊。湖上有n個小島 編號1.n 以及連線小島的m座木橋。每座木橋上各有乙個寶箱...