【網絡流專題】

最近做了兩道網絡流神題,裏面用了幾個非常巧妙的技巧,在今後很多題目中都可以使用得到。

第一題:WC2007石頭剪刀布

      這題是網絡流,簡直太難想到了,總之這道題有幾個非常巧妙的轉化。

      首先是補集轉化,我要統計一個完全有向圖中的三元環的個數,就等於所有環的個數-非三元環的個數。非三元環的個數怎麼統計呢?觀察三元環的特點,發現一個三元環必然有一個點在這個環中入度爲二(出度爲二),由此我們便可以得到一個計算三元環的公式(設d[i]爲i的入度)

  C(3,N)-∑C(2,d[i])

=n*(n-1)*(n-2)-∑d[i] * (d[i]-1)/2

=n*(n-1)*(n-2)-∑(d[i]2+d[i])/2

=n*(n-1)*(n-2)-(1/2)*∑d[i]2 +m/2;

 

其中(n*(n-1)*(n-2)+m/2)皆爲常數,不影響最大化(C(3,N)-∑C(2,d[i])),那麼問題就轉化成了最小化∑d[i]2 了。

這個平方應該怎麼得到?標準做法非常NB,對於每條未定向邊當做一個點,這個點向他的兩個端點連邊,而平方的費用怎麼辦?

拆邊!對於一條容量爲C的邊,費用爲flow2*k,那麼我就把它拆爲C條容量爲一的邊,費用分別爲k,3*k,5*k......(2*c-1)k!

這道題貌似還要用到單位容量網絡流做,等會在學把。

 

第二題:poi最少鏈覆蓋

      給你一個有向無環圖,要求用最少的鏈覆蓋所有的邊。

      做法是把圖看成是一個網絡流,要求每一條邊流量下界爲1的最小流。這個最小流怎麼求呢?其實只要做一次上下界網絡流再從匯點到源點反着做次網絡流就可以了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章