51nod 1499 (最小割)
生活随笔
收集整理的這篇文章主要介紹了
51nod 1499 (最小割)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意
分析
將一些點分成兩個集合,很明顯的最小割問題
設一個S、T,和S相連的點表示在B集合中,和T相連的點表示在A集合中
因為原題是完美值最大,我們轉換一下,變成損失的價值最小,那么就是最小割問題了
對于兩個點(u,v),如果有邊相連,那么u->T v->T 權值是|u-v|;如果無邊,那么S->u S->v,權值是|u-v|
光這樣夠嗎?我們發現,如果u和S相連,v和T相連,那么不僅S->v的價值得不到了,S->u的價值也得不到了,那么該如何處理呢?
我們對于任意一個點對(u,v),都連一條u->v 邊權是|u-v|的邊,那么出現上面這種情況的時候這條邊一定也會被割掉
這樣跑最小割就行了,最后結果除以2
分析建圖可以知道,S->u->v->T 邊權都是|u-v|,所以割的時候可以都選擇割S->u或者v->T的邊,即最后的結果一定是所有點都在A集合中或者B集合中
這樣就優化了復雜度
?
轉載于:https://www.cnblogs.com/wmrv587/p/7627255.html
總結
以上是生活随笔為你收集整理的51nod 1499 (最小割)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【37.50%】【codeforces
- 下一篇: 2.基本语法