題意是一張紙 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...