poj2446 Chessboard 最大匹配

2022-05-12 21:26:29 字數 719 閱讀 1529

題目大意:乙個n*m的棋盤,某些格仔不能用,問用1*2的骨牌能否完全覆蓋這個棋盤,當然,骨牌不能有重疊

思路:顯然黑白染色後,乙個骨牌只能覆蓋乙個白色格仔和乙個黑色格仔,然後我們間二染色建圖,看能否有完美匹配即可tut

#include

#include

#include

#define maxn 10000

using namespace std;

const int dx[10]=;

const int dy[10]=;

int head[maxn],next[maxn],point[maxn],now=0,map[maxn][maxn],id[maxn],match[maxn],h;

bool visit[maxn];

void add(int x,int y)

int dfs(int k)

}return 0;

}int main()

int ans=k;

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

}int fi=1;

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

}memset(match,-1,sizeof(match));

for(i=1;i<=h;i++)

if(ans==n*m)printf("yes\n");else printf("no\n");

return 0;

}

poj 2446解題報告

題目大意 給你乙個棋盤,讓你用一些1 2的木塊覆蓋這個棋盤,但是棋盤上有些位置是有hole的,這些hole是不能被覆蓋的。如果可以覆蓋的話就輸出yes,否則輸出no。題目分析 這道題很容易讓人想起poj2411 也是一道很經典的題目 但是那道題是要求方案數目,這道題是求可否滿足,是完全不同的,一開始...

POJ 2446 Chessboard 最大匹配

昨天沒有搞出來,今天彙編課想出來了,發現還是水水的,昨天估計是受到前面兩題的影響,一直把思考方向搞錯了 題目要求用1 2的卡片覆蓋整個區域,而且要恰好完全覆蓋,不能有重疊。仔細發現,每個格仔要麼是被橫著的1 2的卡片覆蓋,要麼是豎著的覆蓋,而且每個只能和周圍上下左右的四個格仔同時覆蓋,那麼這裡就可以...

POJ2446 二分匹配

題意 給你乙個n m的格仔,問你能不能用1 2的格仔把他鋪滿,有的位置是不能被鋪的。思路 水題,直接把個相鄰的並且都是可以鋪的點連一條邊然後匹配一遍就行了,提醒乙個地方,就是輸入不能鋪的座標的時候是 先輸入列再輸入行。include include define n node 1500 define...