hdu 2176 取 m堆 石子遊戲 (裸Nim)

2022-09-02 16:48:19 字數 480 閱讀 3598

題意:

m堆石頭,每堆石頭個數:a[1]....a[m]。

每次只能在一堆裡取,至少取乙個。

最後沒石子取者負。

先取者負輸出no,先取勝勝輸出yes,然後輸出先取者第1次取子的所有方法。如果從有a個石子的堆中取若干個後剩下b個後會勝就輸出a b

思路:裸的nim。

單看一堆石子,沒有石頭sg[0]=0,乙個石頭sg[1]=1,....n個石頭sg[n]=n。

故sg[a[1],a[2]...a[m]] = sg[a[1]]^...^sg[a[m]] = a[1]^...^a[m]

sg=0 為先手必敗點。

**:

///

nim遊戲

intm,ans;

int a[200005

];int

main()

if(!ans)

puts("no

");else}}

}}

HDU 2176 取 m堆 石子遊戲

尼姆博弈。講解 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況最有意思,它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿...

HDU 2176 取 m堆 石子遊戲

hdu 2176 取 m堆 石子遊戲 problem description m堆石子,兩人輪流取.只能在1堆中取.取完者勝.先取者負輸出no.先取者勝輸出yes,然後輸出怎樣取子.例如5堆 5,7,8,9,10先取者勝,先取者第1次取時可以從有8個的那一堆取走7個剩下1個,也可以從有9個的中那一堆...

HDU2176取 m堆 石子遊戲

hdu2176取 m堆 石子遊戲 problem description m堆石子,兩人輪流取.只能在1堆中取.取完者勝.先取者負輸出no.先取者勝輸出yes,然後輸出怎樣取子.例如5堆 5,7,8,9,10先取者勝,先取者第1次取時可以從有8個的那一堆取走7個剩下1個,也可以從有9個的中那一堆取走...