codevs 1022覆蓋(匈牙利演算法)

2022-05-20 08:32:13 字數 1017 閱讀 6504

嗯,先上題目描述。。。

此題接近裸的匈牙利演算法,將陸地和其四周是陸地的點連一條邊,這樣就有了乙個無向圖。

接著就是從第乙個點出發列舉未被標記的點,標記與其對應的另乙個點(因為是1*2的長方形)。

開了乙個四維陣列e[x1][y1][x2][y2],若為零代表點(x1,y1)與(x2,y2)不連通。

match[x1][y1][1]放與點(x1,y1)配對的另乙個點的x,match[x1][y1][2]放與點(x1,y1)配對點的y。

還有就是更改的時候記得雙向更改,因為是無向圖啊。

然後就跑dfs,**應該是可以看得懂的吧。。。

#include#include

intm,n,k;

int cc[4][2]=,,,};

int e[102][102][102][102]=;

bool ok[102][102],book[102][102

];int match[102][102][3

];bool dfs(int x,int

y) }}}

return

false;}

intmain()

for(int i=1;i<=m;i++)

if(j+1

<=n&&ok[i][j+1

])

}}

}for(int i=1;i<=m;i++)

}printf("%d

",sum);

return0;

}

view code

演算法複習 codevs1022 匈牙利演算法

題目描述 description 有乙個n m的單位方格中,其中有些方格是水塘,其他方格是陸地。如果要用1 2的矩陣區覆蓋 覆蓋過程不容許有任何部分重疊 這個陸地,那麼最多可以覆蓋多少陸地面積。輸入描述 input description 輸入檔案的第一行是兩個整數n m 1 n m 100 第二行...

CODEVS 1022 覆蓋 解題報告

codevs.cn 時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 有乙個n m的單位方格中,其中有些方格是水塘,其他方格是陸地。如果要用1 2的矩陣區覆蓋 覆蓋過程不容許有任何部分重疊 這個陸地,那麼最多可以覆蓋多少陸地面積。輸入描述 input descriptio...

wikioi 1022 覆蓋(匈牙利)

好不容易來一次1a,水題啊。染色後裸匈牙利orz include include include include include include using namespace std define rep i,n for int i 0 i define for1 i,a,n for int i ...