HDU 2255 奔小康賺大錢 KM演算法題解

2021-06-22 15:53:58 字數 912 閱讀 4834

km演算法求的是完備匹配下的最大權匹配,是hungary演算法的進一步,因為hungary演算法是最大匹配的演算法,不帶權。

經典演算法,想不出來的了,要參考別人的。然後消化吸收吧。因為真的很複雜的演算法。

牽涉到很多什麼增廣路,交錯樹之類的,名詞,術語,變數就一大堆。心浮氣躁可不能學這樣的演算法了,要心平氣和,深呼吸,然後慢慢消化才行。

這個部落格分析挺詳細的,且帶圖:

兩個部落格一樣的圖,也不知道誰抄誰的了。

我下面演算法是稍微修改一點而成的程式。

主要是slack可以不使用陣列記錄,只需要記錄當前的得到的最小值就可以了。

#include #include #include #include using namespace std;

const int max_n = 301;

int n;

int link[max_n];//右邊到左邊的連線

int slack;//當前dfs中,訪問了的點中可以讓利的最小限度

bool visleft[max_n], visright[max_n];

int curmaxval[max_n], giveawayval[max_n];

int gra[max_n][max_n];

bool hungary(int u)

} else if(slack > curslack) slack = curslack;

} return false;

}int km()

} }int ans = 0;

for (int i = 1; i <= n; i++) ans += gra[link[i]][i];

return ans;

}int main()

return 0;

}

HDU 2255 奔小康賺大錢 KM

裸km。include include include using namespace std const int max n 300 30 const int inf 0x3f3f3f3f int n x,n y 兩邊的點數 int g max n max n 二分圖權值 int link max...

HDU 2255 奔小康賺大錢 KM

傳說在遙遠的地方有乙個非常富裕的村落,有一天,村長決定進行制度改革 重新分配房子。這可是一件大事,關係到人民的住房問題啊。村里共有n間房間,剛好有n家老百姓,考慮到每家都要有房住 如果有老百姓沒房子住的話,容易引起不安定因素 每家必須分配到一間房子且只能得到一間房子。另一方面,村長和另外的村領導希望...

hdu2255 奔小康賺大錢(KM)

problem description 傳說在遙遠的地方有乙個非常富裕的村落,有一天,村長決定進行制度改革 重新分配房子。這可是一件大事,關係到人民的住房問題啊。村里共有n間房間,剛好有n家老百姓,考慮到每家都要有房住 如果有老百姓沒房子住的話,容易引起不安定因素 每家必須分配到一間房子且只能得到一...