bzoj1059 矩陣遊戲

2022-03-25 22:58:00 字數 939 閱讀 5750

二分圖匹配經典題。。

因為每一行的點不管如何交換也不會不在同一行,同理,同一列的點無論如何交換都仍然在這一列。

那麼也就是說要選則一些點使得滿足題意,那麼就可以去跑匹配了。

若a[i][j]是黑色的,那麼就從i行向j列連邊,最後跑匹配。

(如果用邊表的話一定要記得清空計數器。。。不然就炸了。。)

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8using

namespace

std;910

const

int n=201000;11

int h[600],r[n],to[n],flow[n],d[n],cur[n],v[600

],tot,s,t;

12 queueq;

1314 inline void ins2(int u,int v,int

f)18

19 inline void ins(int u,int v,int

f)23

24 inline bool

bfs()36}

37}38return

v[t];39}

4041

int dfs(int x,int

f)51}52

return

ret;53}

5455

intmf()

61return

f;62}63

64int

main()

77for(int i=1;i<=n;i++)ins(s,i,1),ins(n+i,t,1

);78 puts(mf()==n?"

yes":"no"

);79

}80 }

view code

bzoj1059 矩陣遊戲

time limit 10 sec memory limit 162 mb submit 4731 solved 2255 submit status discuss 矩陣的任意兩行,交換這兩行 即交換對應格仔的顏色 列交換操作 選擇矩陣的任意行列,交換這兩列 即交換 對應格仔的顏色 遊戲的目標,即...

BZOJ1059 矩陣遊戲

目錄題目傳送門 剛開始理解錯題意了,以為除了主對角線上之外都不能有 後來發現只要主對角線上可以都是 就是合法的了。實際上的題意就是讓你判斷 n 行與 n 列是否可以都匹配上,這樣就是乙個比較簡單的二分圖匹配,如果第 i,j 位置上為 就說明第 i 行與第 j 行能夠匹配,然後跑一遍匈牙利就行了。in...

bzoj 1059 矩陣遊戲

題解 很玄學的問題 因為不同行或者不同列的格仔,交換仍然不同行或者不同列 所以把問題轉化為從黑格仔裡選n個,它們的橫縱座標都不相同 然後二分圖匹配 兩個子集分別是橫座標和縱座標,如果求出的最大匹配為n,則成立,否則不成立 1 include2 include3 define maxn 410 4in...