找規律類博弈(3)

2021-07-11 08:14:33 字數 1235 閱讀 2153

盒子遊戲

描述

有兩個相同的盒子,其中乙個裝了 n 個球,另乙個裝了乙個球。alice 和 bob 發明了乙個遊戲,規則如下:alice 和 bob 輪流操作,alice 先操作。每次操作時,遊戲者先看看哪個盒子裡的球的數目比較少,然後清空這個盒子(盒子裡的球直接扔掉),然後把另乙個盒子裡的球拿一些到這個盒子中,使得兩個盒子都至少有乙個球。如果乙個遊戲者無法進行操作,他(她)就輸了。下圖是乙個典型的遊戲:

面對兩個各裝乙個球的盒子,bob 無法繼續操作,因此 alice 獲勝。你的任務是找出誰會獲勝。假定兩人都很聰明,總是採取最優策略。

輸入輸入最多包含 300 組測試資料。每組資料僅一行,包含乙個整數 n(2<=n<=10^9)。輸入結束標誌為 n=0。

輸出對於每組資料,輸出勝者的名字。

樣例輸入

2 

3 4

0

樣例輸出

alice 

bob

alice

**

湖南省第七屆大學生計算機程式設計競賽

注意題目沒有說清的一層意思:當兩個盒子裡球的數目相等的時候任意清空乙個盒子。

思路:

先從最基本情況來分析它的勝負狀況:

a.   1,1  必敗狀態,不解釋。

b.   2,0  2,1  2,2   必勝狀態,2,1 2,2和2,0是一樣的情況,因為總要清空較小的那個盒子,下面列舉的情況都省略。

c.   3,0  必敗狀態,因為不管怎麼給空盒子分配,都是符合情況b,而求情況b是對手的必勝狀態

d.   4,0 必勝狀態,因為可以分配1個或者3個給空盒子,滿足情況c嗎,使對手必敗

同理(5,0)(6,0)都是必勝狀態。

而(7,0)不管怎麼分配只能得到:6,1 5,2 4,3 ,這些都是對手的必勝狀態,所以(7,0)是乙個必敗狀態。

那麼接下來就可以仿照(3,0)這個必敗狀態知道8,0 9,0 10,0 11,0 12,0 13,0 14,0是必勝狀態,而15,0是必敗狀態。

先在就差不多可以看出規律了:只要輸入的數字是2n-1,先手必敗

#include 

#include

int main (void

)

return

exit_success;

}

找規律博弈小記(更新)

最近在hdoj上水博弈的題目,在這裡記錄一些小規律。1 題意 一堆n個石子,每次最多取q個,最少取p個,切最後不少於p個時必須一次性取完。誰後取完者輸。ps 那麼就是誰先取到剩p個時候就贏了,少於p個的話一定輸,因為必須取完,如果誰當前遇到0個,贏,大於p小於p q個是贏,因為先手總是可以想辦法給後...

hdu1564博弈 找規律

include include include include include include include include include include include include include define pi acos 1 define ll long long define mo...

hdu 5708 博弈找規律

題意 乙個無限大的棋盤,一開始在1,1,有三種移動方式,x 1,y x,y 1 x k,y k 最後走到nm不能走了的人算輸。思路。我們看成一開始在 n,m 往1,1,走,所以自然可以從1,1,開始遞推往出,那麼打表程式就出來了。打出表以後我們觀察到k等於1時稍有特殊,其他則與 min cx,cy ...