有乙個n行m列的黑白棋盤,你每次可以交換兩個相鄰格仔(相鄰是指有公共邊或公共頂點)中的棋子,最終達到目標狀態。要求第i行第j列的格仔只能參與mi,j次交換。
輸入格式:
第一行包含兩個整數n,m(1<=n, m<=20)。以下n行為初始狀態,每行為乙個包含m個字元的01串,其中0表示黑色棋子,1表示白色棋子。以下n行為目標狀態,格式同初始狀態。以下n行每行為乙個包含m個0~9數字的字串,表示每個格仔參與交換的次數上限。
輸出格式:
輸出僅一行,為最小交換總次數。如果無解,輸出-1。
輸入樣例#1: 複製
3 3輸出樣例#1: 複製110000
001000
110100
222222
222
4網路流極品好題
一開始拆成兩個點問題很大 因為中間的點是交換兩次 而路徑兩端的點只用交換一次 這點很難處理
可以將點拆為三個點
如果原圖有點 s-mid-1-0 如果末圖有點 mid-t-1-0
設棋盤的交換次數為f
如果該點的原圖和末圖的情況相同 那麼 出去的流量一定等於進來的流量 所以in和out 都連 f/2
如果原圖有黑點 末圖沒有 那麼說明出點一定大於入點 in-mid-f/2-0 mid-out-(f+1)/2-0
然後連八向圖
P3159 CQOI2012 交換棋子
相當神奇的費用流拆點模型 最開始我想到把交換黑色棋子看成乙個流流動的過程,流從乙個節點流向另乙個節點就是交換兩個節點,然後把乙個位置拆成兩個點限制流量,然後就有了這樣的建圖方法 s向所有初始是黑色點的入點連cap 1,cost 0的邊,最後是黑色點的出點向t連一條cap 1,cost 0的邊,然後對...
P3159 CQOI2012 交換棋子
有乙個n行m列的黑白棋盤,你每次可以交換兩個相鄰格仔 相鄰是指有公共邊或公共頂點 中的棋子,最終達到目標狀態。要求第i行第j列的格仔只能參與mi,j次交換。第一行包含兩個整數n,m 1 n,m 20 以下n行為初始狀態,每行為乙個包含m個字元的01串,其中0表示黑色棋子,1表示白色棋子。以下n行為目...
2668 cqoi2012 交換棋子
time limit 3 sec memory limit 128 mb submit 1136 solved 423 submit status discuss 有乙個n行m列的黑白棋盤,你每次可以交換兩個相鄰格仔 相鄰是指有公共邊或公共頂點 中的棋子,最終達到目標狀態。要求第i行第j列的格仔只能...