這題比3041要有點難度,主要是在判斷節點的時候,要兩次掃瞄輸入的矩陣。這個叫我shi也想不到啊。。人家discuss裡面給了很好的模板,學著點吧。具體的分析請看下面:
**:sample:
4 4*.*.
.***
***.
..*.
把行裡面連在一起的坑連起來視為乙個點,即一塊橫木板,編上序號,sample則轉化為:
1 0 2 0
0 3 3 3
4 4 4 0
0 0 5 0
把這些序號加入x集合,再按列做一次則為:
1 0 4 0
0 3 4 5
2 3 4 0
0 0 4 0
同樣加入y集合,乙個坑只能被橫著的或者被豎著的木板蓋住,將原圖的坑的也標上不同的序號,一共九個坑
1 . 2 .
. 3 4 5
67 8 .
. . 9 .
比如7號坑可以被橫著的4號木板和豎著的3號木板蓋住,把每個點的對應的橫木板(4)和豎木板(3)中間連一條邊的話,則問題轉化為 找盡量少的邊把這些點都蓋住,根據定理便是求最大匹配數.
#include #includeusing
namespace
std;
#define maxn 501
intn,k;
bool
map[maxn][maxn],v[maxn];
intlink[maxn];
bool dfs(int
x) }
}return
false;}
intmain()
for(i=1; i<=n; i++)
printf(
"%d\n
",result);
return0;
}
poj 2226 還是最小點覆蓋的匹配問題
這題比3041要有點難度,主要是在判斷節點的時候,要兩次掃瞄輸入的矩陣。這個叫我shi也想不到啊。人家discuss裡面給了很好的模板,學著點吧。具體的分析請看下面 sample 4 4 把行裡面連在一起的坑連起來視為乙個點,即一塊橫木板,編上序號,sample則轉化為 1 0 2 0 0 3 3 ...
POJ2226 不錯的最小頂點覆蓋
題意 給你乙個n m 的矩陣,上面有 和 讓你用少的木板吧所有 覆蓋,木板寬度是1,長度隨意,木板可以重疊,但是不能覆蓋到 上。思路 這個題目建圖方式不錯,回想下最基本的最小定點覆蓋,也是在n m 的矩陣上,覆蓋某些點,但是可以覆蓋 那樣直接匹配行列就行了,這個如果是 就得用兩個了,那我們可以直接把...
POJ3041最小點覆蓋
頂點覆蓋 g中的任意邊都至少有乙個端點屬於s的頂點幾何 s 屬於 v 最小頂點覆蓋,就是盡可能少的選出一些點構成集合s,使得圖g中任意邊,都至少又乙個端點屬於s 每一列當成乙個點,每一行當成乙個點,若行節點和列節點之間有邊,則表明該行列該列有乙個障礙物。主要是構圖 將每一行當成乙個點,構成集合1,每...