題意:給定乙個數k,a和b兩個人來博弈。從1a先開始,每次的動作是乘以[2,9]之間的乙個整數,誰先把這個數乘到大於給定的k就算贏,問誰有必勝策略。
思路:博弈題最難描述清楚,一開始找規律,然後總結規律中的必然。(能到達必敗態的狀態為必勝態,只能到達必勝態的狀態為必敗態。對於給定的k,n>=k時為必敗態,所有能到達這些必敗態的n為必勝態,這些必勝態中最小的是ceil(k/9.0)。凡是大於它的都可以直接到達必敗態。然而有些狀態只能到達必勝態,就是那些乘二都要進入必勝態的數字,這些數中最小的是ceil(ceil(k/9.0)/2.0)。這樣我們又得到了一批必敗態,我們只要按照這種方法不斷地由必敗推必勝,由必勝推必敗,即可知道1是必敗還是必勝。也就知道了stan是贏還是輸了。
#include #include #include #include using namespace std;
unsigned int n;
int test(unsigned int n)
int main()
}
POJ 2505 乘法博弈
題意 stan從1開始,可以乘上2 9中任何乙個數,ollie也如此操作,只到某個人本回合的操作超過n為之。1 找到stan的必敗狀態,10,18 163,324 9 n 2 n 1 1,9 n 2 n 從1開始,無論stan怎麼操作,ollie將格局變為平衡狀態 9 1 2 0 1,9 1 2 1...
poj 2505 乘法博弈論
題目大意 題意 stan從1開始,可以乘上2 9中任何乙個數,ollie也如此操作,只到某個人本回合的操作超過n為之。1基本思路 找到stan的必敗狀態,10,18 163,324 9 n 2 n 1 1,9 n 2 n 分析 0 9 stan 10 18 ollie 19 162 stan 163...
博弈論(階梯博弈)POJ 1704
對階梯博弈的闡述 博弈在一列階梯上進行,每個階梯上放著自然數個點。兩個人進行階梯博弈,每一步則是將乙個集體上的若干個點 1 移到前面去,最後沒有點可以移動的人輸 證明方式 如這就是乙個階梯博弈的初始狀態 2 1 3 2 4 只能把後面的點往前面放 如何來分析這個問題呢 其實階梯博弈經過轉換可以變為n...