上下界網路流學習小計 JZOJ3302 供電網路

2022-09-01 15:45:25 字數 923 閱讀 5863

每個城市i多(缺)電量left[i],可以耗費in[i]從外面輸入電量,out[i]向外面輸出電量,或者有一些有向邊可以轉移電量,這些有向邊的流量有上界和下界,代價為a*x2+b,x為流量。求最少滿足電量剛剛好為0的方案數。

走反向邊之後費用不再+2a,因為反向邊同於撤銷操作,所以費用應該-2a,即還原回去。

費用流我打的是ek,比較慢,但是方便每一次修改邊的費用。

#include#include#include#include#define maxn 205

#define maxm 10005

#define maxd 1005

#define inf 2e9

#define i(x) ((x&1)?x+1:x-1)

using namespace std;

int n,m,i,j,k,x,y,a,b,l,u,left[maxn],in[maxn],out[maxn],ans;

int s,t,ss,tt;

int em,e[maxm],nx[maxm],ls[maxn],ec[maxm],va[maxm],vb[maxm],ct[maxm],tp[maxm];

int dis[maxn],vis[maxn],d[maxd],fa[maxn],fai[maxn],t,w;

void insert(int x,int y,int flow,int a,int b,int cnt)

void link(int x,int y,int low,int up,int v)

int cost(int i)

int spfa()

for(i=1;i<=m;i++)

insert(t,s,inf,0,0,1);

ekflow();

printf("%d",ans);

}

上下界網路流學習小計

有上下界的網路流。網路流有了建圖,其他都是浮雲。設立超級源ss和超級匯tt,原來的s和t還是有的。上下界網路流的建圖最好感性的理解,因為證明很複雜,就當做黑盒演算法。t向s連一條容量為 的邊。有一條u連向v的邊,下線為l,上限為r,那麼我們從s到u連 的邊,v到t連 的邊,從u到v連一條r l的邊。...

上下界網路流學習筆記

一些點,一堆邊,每條邊要滿足流量限制 l,r 先令每條邊流量等於流量下限,得到初始流,初始流可能不滿足流量守恆,再建出殘量網路 上限 下限 求出可能不滿足流量守恆的附加流,使附加流和初始流合併後滿足流量守恆 定義 a i 表示初始流中流入量 流出量 若 a i 0 表示流入量大於流出量,附加量需要流...

上下界網路流(3合1)

我打的是loj的板子,因為比較全 具體做法就是將每一條限制為 l,r 的邊 u,v 拆開 連線 s,v 容量為l,u,t 容量為l,u,v 容量為r l 大家可以感性地理解一下 資料範圍大的時候,可以先記錄每個點與起點終點的流量,最後減一減,一起連邊就好了 include include inclu...