將一堆石子分成多堆 Multi SG 遊戲

2022-09-16 21:42:34 字數 761 閱讀 8796

這類博弈只需要記住一點,乙個由多個遊戲組成的遊戲sg值為這多個遊戲的sg值異或和。

也就是所有對一整個nim遊戲它的sg值即為每一小堆的sg的異或和。

hdu 5795

這題就是可以選擇把一堆石子分成3堆。 通過上述方法,只需要打表找出規律即可。

#include#include

#include

using

namespace

std;

int sg[10000

];void init()//

sg打表

;

for(int j=0;j<=i;j++)

for(int j=1;j)

for(int k=1;k)

}int j=0

;

while(vis[j]!=0)j++;

sg[i]=j;

}}int

main()

//int

t; cin>>t;

while(t--)

else

if(tmp%8==7) ans ^= (tmp+1

);

else ans ^=tmp;

}if(ans == 0) cout<<"

second player wins.

"

first player wins.

"<}

}

一堆一堆又一堆 合併果子

題目描述 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗...

送你一堆區間

按區間貪心做慣了,遇到按區間dp就傻了。實際上應該按關鍵點dp,這樣計數才更加方便。至於線段樹優化,直接把dp陣列看做線段樹是不是太。accode include include include include define maxn 500005 define mod 1000000009 def...

一堆內建函式

del 當刪除乙個物件時,python直譯器也會預設呼叫乙個方法,這個方法為 del 方法 call 乙個物件加乙個小括號可以執行該類下面的 call 方法 doc 無法被繼承 module 表示當前操作的物件在哪個模組 class 表示當前操作的物件的類是什麼 instance和ssubcclas...