Hakase and Nano(博弈)
生活随笔
收集整理的這篇文章主要介紹了
Hakase and Nano(博弈)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:有n堆石頭,每堆石頭有a[i]個。H和N兩個人輪流拿,每人最少拿1個。1代表H先拿,2代表N先拿。問H是否會贏。H每一回合會拿兩次,但是N只能拿一次。
對于H先拿的情況,如果他可以拿(代表這個堆目前不為空),他一定會盡力改變自己現在的處境。那么什么時候他就改變不了了呢?就是拿完這一堆就沒有了的時候。即這一堆的石頭數目為1的時候。如果n堆石子,每堆只有一個石頭,那么什么時候才是H先拿的必敗態呢?就是n%30的時候。這樣無論H怎么拿都不能贏。其余的時候就是H的必勝態。
對于N先拿的情況,極限情況也是石頭個數為1的時候。N先拿,對于H來說,之要是N拿完之后,不是H的必敗態,H就可以贏了。那就討論N拿一次成為H必敗態的情況。
①n1,無論怎么拿,H都輸。
②設石頭數目為1的堆有sum個,sumn并且n%31,這樣無論怎么拿,H都輸。
③設石頭數目為1的堆有sum個,sumn-1&&n%31,N可以把不是1的那一堆拿完,而后就是H的必敗態。
④設石頭數目為1的堆有sum個,sumn-1&&n%30,N把不是1的那一堆拿成1,而后就是H的必敗態。
代碼如下:
博弈就是要冷靜思考,思考兩小時,寫題五分鐘。
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的Hakase and Nano(博弈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Super-palindrome(思维)
- 下一篇: Master of GCD(差分数组||