前往
大廳
主題

ZeroJudge - a095: 麥哲倫的陰謀 解題心得

Not In My Back Yard | 2020-12-01 00:00:04 | 巴幣 0 | 人氣 403

題目連結:


題目大意:
輸入有多列,每列給定兩正整數 N 、 M (1 < M ≦ N < 2 ^ 31),代表有 N 位犯人以及 M 頂紅帽。

這 N 個人在進行猜帽子,所有人彼此不能交換任何情報。每人都不知道自己的帽子顏色(只會是白色或是紅色),也不知道實際上有多少頂紅色帽子,只知道至少有一頂帽子是紅的。每個人都可以看見其他人的帽子顏色,且每天有一次機會猜自己的帽子顏色,只要猜對自己的帽子就可以在隔天出獄(因此隔天其他人就看不到他),但是一旦猜錯就會被處死。

假設這 N 位犯人都很聰明,因此不會胡亂猜測自己的帽子顏色導致自己有可能死亡。試問最少需要多少天,所有人都可以推測出自己的帽子顏色並出獄?



範例輸入:
10 1
10 2


範例輸出:
2
3


解題思維:
我們先從一頂紅帽開始:
那些 N - 1 個戴著白帽的人都會各自看到一頂紅帽,但是因為不知道自己頭上的帽子是不是紅色的,所以無法確定;而帶著紅帽的人看到其他所有人都是白帽,且知道至少有一頂紅帽,所以自己頭上的帽子是紅色的。所以他在隔天就出獄了。

接著其他人看到紅帽子的人不見了,所以剩下的所有人都可以肯定那位紅帽子的人因為看到其他人都是白色的因而確定顏色並離開,因為如果自己是紅的,第一天紅帽者就無法確定顏色,因此自己的帽子顏色必定是白的。所以隔天這些人就出獄了。

因此,總共需要 2 天的時間。


接著是兩頂紅帽的情況:
類似地,N - 2 個白帽者看到了兩頂紅帽,但不確定自己是不是紅的,所以不會猜測;而那兩位紅帽者都看見彼此是紅的,但因為不知道有幾頂紅色,所以也同樣無法確定自己的顏色,所以也不會猜測。

接著第二天,那兩位紅帽者看見彼此都沒有離開,於是便知道了肯定現在不是只有一頂紅帽的情況,因此自己的帽子顏色是紅的(不然另一個紅帽者第一天就可以按照只有一頂紅帽時的邏輯離開),所以隔天出獄。

最後第三天,剩下的白帽者看見紅帽者不見了,便知道自己不是紅帽(同先前的邏輯),因此可以確定自己是白帽。

因此,總共需要 3 天的時間。


……以此類推。因此可以看到所求天數為 M + 1 天。不過當人數 = 紅帽數時,先前的邏輯雖然同樣可行,但是已經不需要再一天使得白帽者推測並離開(因為根本沒有白帽者),所以所求天數為 M 。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作