發表文章

目前顯示的是有「賽局」標籤的文章

[TIOJ] 1087. [Interactive] 取石頭(一)

題目連結: http://tioj.infor.org/problems/1087 經典的NIM題,可以用SG Value發現本題先手必勝,但要怎麼玩呢??,不難發現若且為若對方的盤面SG值為0他就輸了,因此我只要想辦法構造讓對方的三堆石頭xor起來是0,特別的是當剩兩堆且一堆為一時,顯然我們只要把那堆不為0的拿走就好了,而剩一堆時顯然把那堆拿到剩一就好了,所以記得特判一下 #include "lib1087.h" int stone[] = {10,15,20}; inline bool all0(); inline bool only1(int); int main(){ Initialize(); while(!all0()){ for(int i=0;i<3;i++){ int cnt,pile; if(stone[0]+stone[1]==1){ Take_Stone(3, stone[2], &pile, &cnt); stone[2]=0; stone[pile-1]-=cnt; break; }else if(stone[0]+stone[2]==1){ Take_Stone(2, stone[1], &pile, &cnt); stone[1]=0; stone[pile-1]-=cnt; break; }else if(stone[1]+stone[2]==1){ Take_Stone(1, stone[0], &pile, &cnt); stone[...