bzoj1434 ZJOI2009 染色遊戲

2022-05-02 03:39:06 字數 1339 閱讀 4469

一共n × m 個硬幣,擺成n × m 的長方形。dongdong 和xixi 玩乙個遊戲, 每次可以選擇乙個連通塊,並把其中的硬幣全部翻轉,但是需要滿足存在乙個 硬幣屬於這個連通塊並且所有其他硬幣都在它的左上方(可以正左方也可以正 上方),並且這個硬幣是從反面向上翻成正面向上。dongdong 和xixi 輪流操作。 如果某一方無法操作,那麼他(她) 就輸了。dongdong 先進行第一步操作,假 設雙方都採用最優策略。問dongdong 是否有必勝策略。

第一行乙個數t,表示他們一共玩t 局遊戲。接下來是t 組遊戲描述。每 組遊戲第一行兩個數n;m,接下來n 行每行m 個字元,第i 行第j 個字元如 果是「h」 表示第i 行第j 列的硬幣是正面向上,否則是反面向上。第i 行j 列 的左上方是指行不超過i 並且列不超過j 的區域。

對於每局遊戲,輸出一行。如果dongdong 存在必勝策略則輸出「- -」(不含 引號) 否則輸出「= =」(不含引號)。(注意輸出的都是半形符號,即三個符號 ascii 碼分別為45,61,95)323

hhhhhh

2 3hhh

tth2 1th

= =- -

- -對於40% 的資料,滿足1 ≤ n;m ≤ 5。

對於100% 的資料,滿足1 ≤ n;m ≤ 100,1 ≤ t ≤ 50。

正解:$sg$函式。

又是這種硬幣問題。。我開始以為每次翻轉乙個矩形,然後寫了個$dp$求$sg$函式並成功爆零。。

然後寫乙個搜尋可以發現,如果$i=1$或$j=1$,$sg[i][j]=lb(max(i,j))$,否則$sg[i][j]=2^$。

但是太大了,所以我們只記錄二進位制的每一位是否為$0$就行了。

1 #include 2

#define il inline

3#define rg register

4#define ll long long

5#define lb(x) (x & -x)67

using

namespace

std;89

int cnt[205],bin[205

],n,m,ans;

1011 il int

gi()

1819 il char

gc()

2324 il void

get(rg int x,rg int

y)26

if (y==1)

27 cnt[x+y-2]^=1; return;28

}2930 il void

work()

37 puts("

=_="); return;38

}3940int

main()

BZOJ1003 ZJOI 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...

ZJOI2007 BZOJ1059 矩陣遊戲

description 第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大小 接下來n行為乙個n n的01矩陣 0表示白色,1表示黑色 output 輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes 否則輸出一行no。sample i...

bzoj 1096 ZJOI2007 倉庫建設

time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...