博弈論 POJ 2311 特詳細

2021-08-21 20:57:18 字數 1635 閱讀 6594

題意是一張紙 n*m 每人切一刀 1*1 的贏  切了不扔掉

預設2 2  / 2 3 / 3 2 都已經失敗了

(1 n)這裡沒進行初始化...  題目裡沒給  **裡就沒達到

(嚴格的說其實按說都應該拓展成……的)

由異或知, 如果切完之後是兩個必敗的狀態(0和0) ,那麼就是當前狀態可以達到0 ,mex一下就不會拿到0,所以當前應該是必勝的狀態。

如果切完之後能達到兩個一樣必勝狀態(如2 4 2 4 ),從運算上說可以到達0,從理論上說,我切完之後對手只能搗鼓兩個必勝態,必勝態的定義是只能達到必敗態,他給了兩個必敗態,我把剩下的必勝態也變成了兩個必敗態,所以最後還是對手達到必敗。

感謝zj爸爸在吃飯的時候讓我從1 1 推到2 2 /2 3/2 4 /2 5/2 6 /2 7各種然後稍微明白了一點。

如果這個狀態分解下去如2 4 只能達到兩個必敗態則它必勝,因為對手無路可走。

2 7 2 6 什麼的都是。

但是如果死切,只能切出乙個必勝和乙個必敗,是沒用的,對手去切必勝給你留下三個必敗。

必須要兩個必勝和兩個必敗才可以。

使用異或可以做到。

int gao(int x, int y)這裡只是跑一次用到的。

for (int i = 2; i < x - 1; i++)

for (int i = 2; i < y-1; i++)

//****** 這裡要寫成0 ,不然不能記錄必敗態(為0時候的形態)

//....

for (int i = 0; i <= maxn-1; i++)

} return 0;

}int main()

for (int i = 2; i <= maxn-1; i++)

} while (cin >> n >> m)

return 0;

}要特別注意的有兩點:

(1) runtime error的時候  maxn那邊達到了vs不給說錯,maxn 105到不了

(2)...  x-i 和i  寫的時候寫慢一點 每一行都想一下

**參考 

從開始看這題,還跟zj討論了,還看了。。  別人的**最後

還是。。。

**習慣不好哦。以前就算我是寫了一下午的bfs 最後也只看著別人的找不同,……

其實沒用的

自己看一天和陷入找不同都不好

這兩天 的題目大概是自己不熟悉吧  最後一直找不同找不同

博弈論(階梯博弈)POJ 1704

對階梯博弈的闡述 博弈在一列階梯上進行,每個階梯上放著自然數個點。兩個人進行階梯博弈,每一步則是將乙個集體上的若干個點 1 移到前面去,最後沒有點可以移動的人輸 證明方式 如這就是乙個階梯博弈的初始狀態 2 1 3 2 4 只能把後面的點往前面放 如何來分析這個問題呢 其實階梯博弈經過轉換可以變為n...

poj1740 博弈論,對稱博弈)

題目 有若干堆石子,每一次需要從一堆石子中拿走一些,然後如果願意的話,再從這堆石子中拿一些分給其它任意堆。不能操作的人負。解析 實際上如果n為偶數,我們就可以把ta們兩兩配對 轉換成只有兩堆石子的情況 按照石子數從小到大排序,兩兩配對成一組,組與組之間互不影響 如果可以完美配對 配對後每一組都有兩堆...

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...