題意:
給你乙個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...