原创 HDU 3829 Cat VS Dog (最大獨立點集)

這道題,要好好寫一下總結。 開始的時候,我把貓和狗作爲頂點,求最大獨立點集,但是後來發現,這個是有問題的。畫了一個圖,然後模擬了樣例2,發現這個邊可以重複,也就是說可有不同的小孩的like和dislike是一樣的,那麼這中情況下,刪除一個

原创 UVa 100 3n+1

這道題,wa死我了!宇神要是不提醒我,我估計我還wa着呢! 題不難想,但是陷阱是不少! 首先,輸入的i和j不一定是從小到大;其次,i和j的輸出位置不可以調換;還有,ans和cnt還有f[N]最好是用longlong類型;最後,要注意一個f

原创 HDU 2819 Swap (最大二分匹配+輸出路徑)

題目大意就是給出一個矩陣,每個格子裏面要麼是0, 要麼是1;是否能夠經過交換(交換行或者列)使得主對角線上都是1。 其實就行和列的匹配,左邊是行,右邊是列,然後如果行列交點是1,那麼就可以匹配,看是否爲完美匹配,然後輸出怎麼交換的。開始很

原创 UVa 11733 Airports( MST )

先建一棵最小生成樹,然後看有幾個連通分量,就建幾個機場,最後從已選擇的邊中,將刪除所有比建機場貴的邊,加上相應的機場數! 解題思路要清晰 代碼: #include <cstdio> #include <cstring> #include

原创 UVa 315 Network ( 求割頂)

這道題很簡單,就是一道模板,求一共有多少個割頂。 開始時候,模板理解得有點偏差,不過好在又想了想。這裏要注意的是,主函數裏面的那個for循環是必要,一面一個圖有多個連通分量。同時,還要注意不要忘記填加vis這個標記,如果不添加vis也是可

原创 HDU 1151 Air Raid( 最小路徑覆蓋 )

這道題是很經典的最小路徑覆蓋問題。最小路徑覆蓋,是指在有向無環圖中,選擇最少的點作爲起點,使得遍歷圖中所有的點有且僅有一次。因此,每個單獨的頂點可以看做是一條路徑。最小路徑覆蓋=N-原圖的最大二分匹配數。 代碼: #include <cs

原创 HDU 1150 Machine Schedule(最小頂點覆蓋)

這道題就是求最小頂點覆蓋,其中要注意的是,當有一個任務可以用mode 0來實現的,就可以不加邊,因爲不需要重啓!先把0的都做完,再換機器,就相當於沒有0的這個要求了,因此,忽略mode 0可以做的任務。 開門紅!Yes! 代碼: #inc

原创 POJ 1274 The Perfect Stall(二分匹配)

水!瞬秒的題目!如有不懂,就看算法吧!但願這次比賽有這樣水的題目,哈哈! 代碼: #include <cstdio> #include <cstring> const int N = 220; int ln, rn, bmap[N][N

原创 POJ 2771 Guardian of Decency(最大獨立點集)

把有可能在一起的連邊,求最大獨立點集 代碼: #include <cstdio> #include <cstring> #include <string> #include <iostream> #include <algorithm>

原创 POJ 3020 Antenna Placement (二分匹配)

這道題要求對二分匹配有一個比較詳細的瞭解!同時還要動一點小小的腦筋! 和hdu4185是一個建圖思想,然後不一樣的是,4185裏面不要求覆蓋所有的點,但是這個題目是要求覆蓋所有的點,用少的橢圓! 那麼很顯然,要求一個最大匹配,然後看有幾個

原创 HDU 2389 Rain on Your Parader(二分圖匹配Hopcroft-Carp)

這道題目,點數比較多,用匈牙利算法會超時! 題目很簡答,現在發現二分匹配建圖很重要。這道題就是把人和人能在t時間內可以拿到的雨傘連起來即可,一左一右。 很傻的錯誤就是在最後輸出的時候,printf函數裏面應該是表示數據組號的地方的%d我直

原创 POJ 3692 Kindergarten ( 最大獨立點集 )

這道題是求最大獨立點集! 最大獨立點集=N - 最小頂點覆蓋=N-最大匹配。 反建圖,將不認識的連上邊! 代碼: #include <cstdio> #include <cstring> const int N = 220; int l

原创 HDU 4185 Oil Skimming ( 二分匹配建圖 )

這道題最難的部分就是建圖,能想到怎麼建圖,就沒有問題了,直接套模板即可。 建圖:將每個‘#’的格子作爲一個節點,和與它相鄰的格子連線,構建一個圖,求這個圖的最大二分匹配!要注意的是,這個圖的最大二分匹配,是把所有的‘#’既做爲左邊,有作爲

原创 POJ 3041 Asteroid (二分匹配模板-二分圖最小覆蓋)

這道題題是很經典的建模的題目,也是比較基礎的二分匹配題目。 二分最小覆蓋就是說選擇儘可能少的點,然後使得每條邊至少有一個端點被選中。可以證明的是最小覆蓋數就是最大匹配數。 代碼: #include <cstdio> #include <c

原创 HDU 1054 Strategic Game (最小頂點覆蓋)

剛開始想得難了,打算把二分圖建出來,把頂點分開!其實不用,直接對原圖求最大匹配,然後除以2. 這裏剛開始敲模板,把下標弄錯了,題目是從0開始,我直接從1開始!還有一件事情,一定一定要記得,就是給bmap初始化!!!!很重要,至關重要的!!