time limit: 10 sec
memory limit: 162 mb
submit: 4731
solved: 2255 [
submit][
status][
discuss]
矩陣的任意兩行,交換這兩行(即交換對應格仔的顏色)列交換操作:選擇矩陣的任意行列,交換這兩列(即交換
對應格仔的顏色)遊戲的目標,即通過若干次操作,使得方陣的主對角線(左上角到右下角的連線)上的格仔均為黑
色。對於某些關卡,小q百思不得其解,以致他開始懷疑這些關卡是不是根本就是無解的!!於是小q決定寫乙個程
序來判斷這些關卡是否有解。
第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大
小;接下來n行為乙個n*n的01矩陣(0表示白色,1表示黑色)。
輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes;否則輸出一行no。22
0 00 1
30 0 1
0 1 0
1 0 0
noyes
【資料規模】
對於100%的資料,n ≤ 200
題解難點就在於不好想到二分圖匹配
對於同行的兩個點 怎麼變都是同行 對於同列的一樣
但是對角線的每個點 行列都不同 所以求能不能找到n個互相不同行而且不同列的點。
也就是說每個行只能對應乙個列 每個列只能對應乙個行 求二分圖最大匹配即可
#include#include#include#include#include#includeusing namespace std;
int flag[250],mat[250],mp[205][250],n;
bool km(int x)
} }return 0;
}int main()
int ans=0;
for(int i=1;i<=n;i++)
if(ans==n) printf("yes\n");
else printf("no\n");
} return 0;
}
bzoj1059 矩陣遊戲
二分圖匹配經典題。因為每一行的點不管如何交換也不會不在同一行,同理,同一列的點無論如何交換都仍然在這一列。那麼也就是說要選則一些點使得滿足題意,那麼就可以去跑匹配了。若a i j 是黑色的,那麼就從i行向j列連邊,最後跑匹配。如果用邊表的話一定要記得清空計數器。不然就炸了。1 include 2 i...
BZOJ1059 矩陣遊戲
目錄題目傳送門 剛開始理解錯題意了,以為除了主對角線上之外都不能有 後來發現只要主對角線上可以都是 就是合法的了。實際上的題意就是讓你判斷 n 行與 n 列是否可以都匹配上,這樣就是乙個比較簡單的二分圖匹配,如果第 i,j 位置上為 就說明第 i 行與第 j 行能夠匹配,然後跑一遍匈牙利就行了。in...
bzoj 1059 矩陣遊戲
題解 很玄學的問題 因為不同行或者不同列的格仔,交換仍然不同行或者不同列 所以把問題轉化為從黑格仔裡選n個,它們的橫縱座標都不相同 然後二分圖匹配 兩個子集分別是橫座標和縱座標,如果求出的最大匹配為n,則成立,否則不成立 1 include2 include3 define maxn 410 4in...