匈牙利演算法學習筆記

Eliza_Her發表於2018-03-05

親愛的綠帽子演算法。

【關於裸題】

我還是那麼喜歡把變數名打反(luoguP2055假期的宿舍)。

話說用輸出查錯是很舒服的。

 儘快學會和熟練對拍啊!

【關於建模】

特點便是 ,不管是左部點還是右部點,都必須是一一對應(對應不了就不連了)的關係——也就是“寧可綠帽戴盡,也要從一而終”。

部點可以抽象化

例如luoguP1640連續攻擊遊戲,看到題目很容易去想把一個裝備的2個屬性分別放到左部點和右部點去。但是如果把圖一畫就會發現,這樣子的話,節點們完全不像是個二分圖的樣子。那麼該怎麼建模呢?|+_+|讓我們來看一下有哪些一一對應的關係。

1.1個裝備只能對應1種傷害值

2.1種傷害值只能使用一次

真棒!所以不妨把傷害值設作左部點,裝備編號設作右部點。由於模板統計的是左部點的量,而題目問的是最多傷害次數,所以把傷害值設作左部點是OK的(其實都差不多啦,左邊有連線的點數不就等於右邊有連線的點數嗎)。

這樣子的左部點有一些抽象,但是是非常好用的,明顯是正解啦。

【關於常錯】

1.這次把定義的MAXN和MAXM打反了

2.加邊時一時激動,把add(a,i);add(b,i);打成了add(a,b);

3.用二維陣列已經存不下了,但是用連結串列存圖依然是那麼優秀

相關文章