這類博弈只需要記住一點,乙個由多個遊戲組成的遊戲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...