POJ2446 模板蓋格仔 簡單二分匹配

2022-09-05 01:33:14 字數 999 閱讀 6879

題意:

給你乙個n*m的格仔,有的格仔上有坑,然後讓你用1*2的東西去覆蓋所有沒有坑的格仔,不能重疊,坑上也不能放東西覆蓋,問是否能成功。

思路: 

簡單題目,每個格仔和四周的格仔如果可以放在同乙個1*2的裡面那麼就連線一條邊,直接匹配一遍就行了,有的人可能想問為什麼?可以這麼想,首先如果像覆蓋所有的格仔那麼必須是放最多的1*2覆蓋物((n*m-k)/2這麼多個),然後每個覆蓋物會覆蓋兩個,也就是說必須這寫覆蓋物最後覆蓋的都是一對一對的,把所有的點都拆成兩個點,左右各一排,然後直接匹配,最後/2是不是就是能覆蓋的最大的對數?so.....

#include

#include

#define n_node 1500

#define n_edge 6000

typedef struct

star;

star e[n_edge];

int list[n_node] ,tot;

int mkgx[n_node] ,mkdfs[n_node];

int map[32+5][32+5];

void add(int a ,int b)

int dfs_xyl(int x)

}return 0;

}int main ()

if((n * m - q)&1)

memset(list ,0 ,sizeof(list));

tot = 1;

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

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

memset(mkgx ,255 ,sizeof(mkgx));

int ans = 0;

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

if(ans == n * m - q)

printf("yes\n");

else printf("no\n");

}return 0;

}

POJ2446 二分匹配

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

POJ2239簡單二分匹配

題意 一周有7天,每天可以上12節課,現在給你每科課的上課時間,問你一周最多可以上幾科課,一科課只要上一節就行了。思路 簡單題目,直接二分就行了,好久沒寫二分匹配了,練習下手而已。include include define n node 400 define n edge 27000 typede...

poj 3343 二分匹配 二分

題意 n個人類星球和m個外星人星球,每個星球 包括外星人的 都有乙個初始的飛船數sh1 i 還有乙個每年生產的飛船數p i 還有乙個n m的矩陣d,d i,j 表示從人類星球i到外星人星球j的年數 年啊 當乙個人類星球i可以擊敗乙個外星人星球j的唯一條件是在出發年數ye,ye d i,j p i s...