學習筆記第三十節 zkw費用流

2021-09-01 15:20:15 字數 1099 閱讀 8530

這個zkw大神非常6,把兩種很顯然的網路流演算法結合了起來。

zkw費用流=ek費用流+dinic最大流

對,你沒有看錯。

我們回憶一下dinic找增廣路的過程,是不是一遇到一條可以走的邊就走,走出來一條源點到匯點的一條可行的路徑,就可以了。

我們再回憶一下ek費用流的過程,是不是先跑spfa,使其找出一條流量不為0的,最小費用的,從源點到匯點的,路徑。

這條路也是可行的,那麼我們每次做spfa只能增廣一條路徑。

剩下spfa剩下的資料就沒有用了?

結合一下,我們當前增廣的路徑肯定在源點的最短路圖上。這個結論是不是挺顯然的。

因為一條不在最短路圖上的路徑肯定費用沒有最短路圖上的費用小。

這個最短路圖也是可以一次spfa跑出來的。(正著跑和反著跑其實都是乙個道理)。

這時,我們順著最短路圖來做一次dinic找增廣路就可以了。

並且,我們再做spfa的時候,順便分一下層,那就可以很好的利用dinic的分層優化。

spfa的slf優化也可以加上。

優點大於缺點:在資料量較大的時候,特別是增廣路較多,較長的時候,特別有優勢。

缺點不說了吧,就是資料小的時候常數大。這個是無法避免的。

#include#include#include#include#includeusing namespace std;

int n,m,begin,end;

struct edges[100010];

int first[5010],len=1;

dequef;

bool tf[5010];

int d[5010],ty[5010];

void ins(int x,int y,int c,int cos);first[x]=len;

len++;s[len]=(edge);first[y]=len;}

bool spfa()

} return tot;}

void mcmf()

printf("%d %d\n",flow,cost);}

int main()

mcmf();

}

python爬蟲學習第三十天

今天的內容 維基百科六度分割 終結篇 還記得之前,我們建立了收集從凱文 貝肯開始的維基詞條鏈結的爬蟲,最後儲存在資料庫 裡。為什麼這裡又把這個遊戲搬出來?因為它體現了一種從乙個頁面指向另乙個頁面的鏈 接路徑選擇問題 即找出 和 org wiki eric idle 鏈結路徑 這和從上面的馬爾可夫鏈裡...

Redis學習之環境搭建(第三十天)

redis是乙個開源的使用ansi c語言編寫 遵守bsd協議 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api。資料結構伺服器,因為 value 可以是 字串 string 雜湊 hash 列表 list 集合 sets 和 有序集合 sorted set...

第三十九周學習筆記

原文 rich feature hierarchies for accurate object detection and semantic segmentation目標檢測發展停滯,通過複雜的ensemble模型才能勉強提高一些精度 兩個 insights 三個模組 一些名詞 為什麼不直接使用fi...