CODEVS 1022 覆蓋 解題報告

2021-07-03 22:58:15 字數 1170 閱讀 2432

codevs.cn

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 大師 master

有乙個n×m的單位方格中,其中有些方格是水塘,其他方格是陸地。如果要用1×2的矩陣區覆蓋(覆蓋過程不容許有任何部分重疊)這個陸地,那麼最多可以覆蓋多少陸地面積。

輸入描述 input description

輸入檔案的第一行是兩個整數n,m  (1<=n,m<=100),第二行為乙個整數k( k<=50),接下來的k行,每行兩個整數x,y表示k個水塘的行列位置。(1<=x

<=n,1<=y<=m)。

輸出描述 output description

輸出所覆蓋的最大面積塊(1×2面積算一塊)。

樣例輸入 sample input

4 41 11 4

2 24 1

4 24 4

樣例輸出 sample output

——————————————————————————分割——————————————————————————————

一道經典水題。

因為是用1*2的矩形覆蓋,將原圖中相鄰的方塊染上不同的兩種顏色,乙個矩形覆蓋的兩個方塊顏色不同。

在乙個連通塊中,能夠覆蓋的矩形數量由這個連通塊中最少的一種顏色的方塊數量決定。

瞎搞即可。。。

#include#include#include#include#includeusing namespace std;

struct node;

const int kx[4]=;

const int ky[4]=;

int n,m,co[110][110],a[11000][2],k,cnt,ans;

bool boo[110][110];

void bfs(int x,int y)

} return;

}int main()

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

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

if (boo[i][j]) bfs(i,j);

for (int i=1;i<=cnt;i++) ans+=min(a[i][0],a[i][1]);

printf("%d\n",ans);

}

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

嗯,先上題目描述。此題接近裸的匈牙利演算法,將陸地和其四周是陸地的點連一條邊,這樣就有了乙個無向圖。接著就是從第乙個點出發列舉未被標記的點,標記與其對應的另乙個點 因為是1 2的長方形 開了乙個四維陣列e x1 y1 x2 y2 若為零代表點 x1,y1 與 x2,y2 不連通。match x1 y...

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

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

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 ...