1. 程式人生 > >Game (2018山東省第九屆ACM省賽)

Game (2018山東省第九屆ACM省賽)

g:題意:

給你n堆石子,兩個人nim博弈,問你事先最多移走d堆石子,問能使後手必勝的移動方法有幾種。

t <=5

n<=1000

d<=1000

ai<=1000 (每堆石子數目)

思路:nim的思想一出,立馬想到異或為0,因此,問題轉化為,最多移走d堆石子,使得剩餘的石子異或為有幾種方案。

我的解決方法是記憶化搜尋。dp[i][j][k] 記錄狀態。從前往後搜尋,每一堆石子要或者不要,列舉到最後一個元素結束返回結果,並記憶話。就能解決這個題。(一定要列舉到最後。。。)