bzoj 4131 並行博弈(博弈)

2021-08-11 08:19:19 字數 1105 閱讀 8819

time limit: 10 sec  

memory limit: 256 mb

submit: 42  

solved: 29 [

submit][

status][

discuss]

lyp和ld在乙個n*m的棋盤上玩翻轉棋,遊戲棋盤座標假設為(x, y),1 ≤ x ≤ n,1 ≤ y ≤ m,這個遊戲的遊戲的的遊戲規則如下:

每次可以操作座標為 (x, y) 的棋子,要求棋子 (x, y) 必須是黑色,並且同時翻轉所有棋子座標 (x』, y』) 滿足 x』≤x, y』≤y。

lyp覺得這樣還不夠過癮,於是乎他打算同時玩 k 個這樣的遊戲, 每次可以對其中某乙個遊戲進行操作,lyp先手,ld後手,兩人輪流進行操作,最後無法進行操作的人判輸,現在給你這個遊戲的局面,要求輸出是先手必勝(「lyp win」)還是後手必勝(「ld win」)。

第一行乙個數t,表示資料組數。

接下來t組資料,對於每一組資料:

接下來一行乙個數k,表示有多少個遊戲在進行中,

接下來k部分,每部分第一行兩個數n,m表示棋盤大小,

接下來n行,每行m個數,0 表示這個棋子是白色,1表示為黑色,第一行第一列代表棋子座標(1,1)。

對於每一組資料,換行輸出先手必勝(「lyp win」)還是後手必勝(「ld win」),輸出不包含引號。 1

12 2

1 11 0

lyp win

為什麼這麼水的題沒人寫。。

只要(1,1)是黑色那麼先手必勝,否則先手必敗

證明很簡單:

很顯然每個人無論怎麼操作都一定會改變格仔(1,1)的顏色,而當面對全白色的人必敗,證畢

而這題是多個棋盤,那就和尼姆博奕一樣麼,將所有結果異或起來就ok了

用gets()不要太快,直接從1000ms+變成76ms

#includechar str[10005];

int main(void)

if(ans)

printf("lyp win\n");

else

printf("ld win\n");

} return 0;

}

bzoj4131 並行博弈 博弈論

題目大意 題目鏈結。注釋 略。想法 我們發現無論如何操作都會使得 1,1 發生改變。所以單個 acg 的勝利條件就是 1,1 是否為黑色。如果為黑色那麼可以讓它變成白的。接下來無論對手如何操作都可以通過翻轉 1,1 使得進入對手回合。那麼多個 acg 相加就是取異或和即可。code include ...

bzoj 1022 博弈 Anti Nim(模板)

具體證明請見賈志豪大犇的2009 orz,這裡直接貼結論 對於anti sg 的 1 如果所有子遊戲的sg異或和 0且所有子遊戲的sg 1則先手必勝 2 如果所有子遊戲的sg異或和 0且存在子遊戲的sg 1則先手必勝 兩種情況都不滿足的則先手必輸 var t,n,cnt,tot longint i ...

bzoj4550 小奇的博弈

這個遊戲是在乙個1 n的棋盤上進行的,棋盤上有k個棋子,一半是黑色,一半是白色。最左邊是白色棋子,最右邊是黑色棋子,相鄰的棋子顏色不同。小奇可以移動白色棋子,提比可以移動黑色的棋子,它們每次操作可以移動1到d個棋子。每當移動某乙個棋子時,這個棋子不能跨越兩邊的棋子,當然也不可以出界。當誰不可以操作時...