HDU 1850 SG值,走法任意 sg(x) x

2021-06-15 01:17:34 字數 479 閱讀 1168

#inclue
int main()

{ int i,n,num[111],sum,ans;

while(scanf("%d",&n)&&n)

{ ans=0;

sum=0;

for(i=0;i2.可選步數為任意步,sg(x) = x; 

本題中每一堆都可以選任意個,所以每一堆的sg值都是所剩餘的個數。

最後結果是所有堆的sg值異或的結果。令ans = 所有堆的sg值異或的結果

如果ans == 0,則是必敗點。

如果ans != 0,使取後結果為0的策略是必勝策略

具體怎麼取呢?

每一堆的數值與ans相異或,所得的結果就是這一堆可以取的數量。

但是,如要這一堆數量沒有這麼多,就不可以這麼取*/

尼姆博弈 hdu 1850

nim博弈 題意 有m堆牌,兩個人先後取某堆中的任意 不少於一 張牌,最後取完者勝 問先手取勝第一次取牌有多少種取法。思路 1 如若給出 的是必敗狀態 a1 a2 an 0,則先手不會有任何可能獲得勝利 2 若給出的是必勝狀態 a1 a2 an k,其中k不為零 那麼我們的目的是要把必勝狀態 轉化為...

尼姆博弈 (附 HDU1850)

尼姆博弈 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況與二進位制有著很大的關係,我們用 a,b,c 來表示某種局勢,那麼 0,0,0 必然為奇異局勢,0,n,n 也是種奇異局勢 因為如果對手在其中一堆取m個石子 m n 那麼你也可以在另...

HDU1848(SG,學習,模板)

題意 今天,又乙個關於fibonacci的題目出現了,它是乙個小遊戲,定義如下 1 這是乙個二人遊戲 2 一共有3堆石子,數量分別是m,n,p個 3 兩人輪流走 4 每走一步可以選擇任意一堆石子,然後取走f個 5 f只能是菲波那契數列中的元素 即每次只能取1,2,3,5,8 等數量 6 最先取光所有...