題意:平面上有一些1×2的骨牌,每張骨牌要麼水平放置,要麼豎直放置,並且保證同方向放置的骨牌不會相互覆蓋。水平放置的牌和豎直放置的牌可能相互覆蓋,現在要移去一些牌,使得剩下的牌任何兩張都不會相互覆蓋,問桌面上最多能剩多少張牌。
分析:如果把每張牌看作乙個結點,則共有兩類結點,容易聯想到二分圖。另外,同方向的牌不會相互覆蓋,不同方向的可能相互覆蓋,易想到二分圖的乙個重要性質:同類結點間不會連邊,不同結點間可以連邊。所以顯然是這方面的問題了。
解題思路:
根據上述分析,這是乙個二分圖問題,每張牌作為乙個結點,水平放置的成點集x,豎直放置的成點集y,若兩張牌相互覆蓋,則兩點間連邊。這樣建圖後,乙個「覆蓋點」對應一條邊,成了裸的「最小點覆蓋」問題,即:結點數-最大二分匹配數。
**:
#include #includeview codeusing
namespace
std;
#define n 1200
bool
mp[n][n];
intx[n], y[n], f[n], rm[n], lm[n];
intn, m;
bool path(int
s) }
return
false;}
intmaxmatch()
return
ans;
}int
main()
int ans =maxmatch();
printf(
"%d\n
", n+m-ans);
}return0;
}
hdu2413 二分 二分匹配
題意 地球和外星球大戰,地球有n個飛船,外星球有m個飛船,每個飛船有自己的其實戰艦和戰艦增長率,星球於星球之間有距離,問你最少多少年地球可以打敗外星球,每個星球最多只能和乙個星球對戰.思路 題意的最後一句話告訴我們這個題目滿足二分圖,我們可以二分列舉多少年打敗,每次都重新建圖,對於h i 和 a j...
二分 二分匹配
給了乙個矩陣 n行m列 選n個數 要保證這n個數不在同行同列,計算出第k大的數最小 二分答案,然後我們對於每個a i j mid的我們就i和j建立一條邊 然後二分求最大匹配必須大於等於n k 1 因為是第k大 而不是第k小 坑了好久才發現 include include include includ...
hdu 1150 二分匹配
題意 給出a,b兩台機器,並且各自的工作方式有 種,給出k個任務,及其第ki個任務能夠在a,b機器上完成方式,ai,bi 機器每更換一次工作方式花費時間 1,求最小花費!思路 由於剛學二分匹配,行列匹配法,1a,有點yy。include include include includeusing na...