洛谷P3150 pb的遊戲 1 博弈論入門

2021-08-23 14:37:31 字數 2086 閱讀 8615

(原創)

有一天 pb和zs玩遊戲 你需要幫zs求出每局的勝敗情況

遊戲規則是這樣的: 每次乙個人可以對給出的數進行分割,將其割成兩個非零自然數,之後由另乙個人選擇留下兩個數中的其中乙個;之後由另乙個人進行分割這個剩下的數,重複步驟……

當乙個人無法對數進行分割的時候遊戲結束,另乙個人獲勝

現在要你求出n次遊戲的勝敗

每局由pb先進行分割,如果pb贏輸出"pb wins" 如果zs贏輸出"zs wins"

注:雙方都是絕頂聰明的

輸入格式:

第一行乙個數n,表示資料組數

之後n行,每行乙個數m,表示每局初始的數

輸出格式:

共n行,每行一串字元 表示遊戲結果

輸入樣例#1:

513

7205

輸出樣例#1:複製

zs wins

zs wins

zs wins

pb wins

zs wins

1

這道題是洛谷博弈論專題的第一道入門題, 然而剛開始我是不會做的, 畢竟是道入門題, 我博弈論還沒入門呢.

這道題的做法就是:如果m為偶數, 那麼先手贏(即pb), 如果m為奇數, 那麼後手贏(即zs).

做法很簡單, 可是我們要知道怎麼做的

說實話我對於他們兩個都聰明絕頂, 都會按照最優策略來走很不感冒.既然他們聰明絕頂, 那麼先手明知道m為奇數時自己會輸, 為什麼不灑脫一點走呢? 也許亂走出奇蹟?

那我們來試試看. 當m = 13時, 先手為什麼會輸. 前提是先手知道自己按照最優策略會輸(因為輪到他分時為奇數), 所以開始亂走.

先手:13 = 4 +9

後手:選4, 4 = 1 +3

先手:不得已選3, 3=1+2

後手:選2,2=1+1

後手贏

不服? 再來一把

先手:13=6+7

後手:選6,6=1+5

先手:選5,5=1+4

後手:選4,4=1+3

先手:3=1+2

後手:2=1+1

後手贏

經過了兩把測試,我們不管先手怎麼走(亂走或所謂最優策略),只要他手裡是奇數,都不得不拆成奇數+偶數,那麼後手只要選擇偶數, 他就可以把這個數化成m = n + 1(後手的最優策略), 把奇數轉移給先手.這樣經過若干次轉移之後, 後手手裡一定會是2,然後2 = 1 + 1, 後手就贏了.

所以, 其實手裡是奇數的人是沒有勝算的, 所以這個狀態是必敗態. 而手裡是偶數的人是有必勝的可能的,只有他才有最優策略而且只要他按照最優策略走, 他一定會贏, 因此這個狀態是必勝態. 當然, 如果他sa, 就可能將必勝態拱手讓人.

而理解這個博弈論問題的關鍵, 就是擁有偶數的策略: 每次減一. 因而可以再次將偶數態(必勝態)轉移過來.

事實上, 剛接觸此題時, 我對所謂絕頂聰明, 所謂最優策略很困惑, 兩個人博弈, 憑什麼說我走的是最佳策略結果卻輸了? 我是不是應該把所有走法都試一遍, 然後都輸給你才算我輸?

我的理解是:必敗態從來沒有最佳策略, 博弈也不是雙方的博弈, 而是處在必勝態的那方和自己博弈. 而這場博弈, 由於絕頂聰明的前提, 是必勝的, 而我們要做的, 只是找出誰有跟自己博弈的機會.

#include 

using

namespace

std;

int main()

}

洛谷 P3150 pb的遊戲(1)

原創 有一天 pb和zs玩遊戲 你需要幫zs求出每局的勝敗情況 題目描述 遊戲規則是這樣的 每次乙個人可以對給出的數進行分割,將其割成兩個非零自然數,之後由另乙個人選擇留下兩個數中的其中乙個 之後由另乙個人進行分割這個剩下的數,重複步驟 當乙個人無法對數進行分割的時候遊戲結束,另乙個人獲勝 現在要你...

洛谷P2197 模板 nim遊戲 博弈論

甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子,每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。n im nimni m博弈的模板。定理...

洛谷P2197 模板 nim遊戲 博弈論

甲,乙兩個人玩nim取石子遊戲。nim遊戲的規則是這樣的 地上有n堆石子,每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。假如甲是先手,且告訴你這n堆石子的數量,他想知道是否存在先手必勝的策略。ni mnim 博弈的模板。定理 nim...