E 遊走配對 費用流

2021-10-19 01:54:31 字數 1156 閱讀 3845

傳送門

非常水的網路流

看到這麼多限制,還有變化的邊權…網路流沒跑了

每個點拆分為入點和出點,中間連q

qq條權值為a[i

]+j∗

b[i]

a[i]+j*b[i]

a[i]+j

∗b[i

]的邊,其中j∈[

0,q−

1]

j\in[0,q-1]

j∈[0,q

−1]

源點連向x

xx的入點

y

yy的出點連向匯點,跑最小費用即可

#include

using

namespace std;

const

int inf =

1e9;

const

int maxn =

3e6+10;

struct edged[maxn]

;int head[maxn]

,cnt=1;

void

add(

int u,

int v,

int flow,

int w)

,head[u]

= cnt;

d[++cnt]

=(edge)

,head[v]

= cnt;

}int incf[maxn]

,pre[maxn]

,s,t,dis[maxn]

,vis[maxn]

,n,m,q,a[maxn]

,b[maxn]

;bool

spfa()

}}return dis[t]

!=inf;

}int mincost =0;

void

dinic()

}}intmain()

for(

int i=

1;i<=m;i++

)for

(int i=

1;i<=q;i++

)for

(int i=

1;i<=q;i++

)dinic()

; cout << mincost;

}

4514 Sdoi2016 數字配對 費用流

description 有 n 種數字,第 i 種數字是 ai 有 bi 個,權值是 ci。若兩個數字 ai aj 滿足,ai 是 aj 的倍數,且 ai aj 是乙個質數,那麼這兩個數字可以配對,並獲得 ci cj 的價值。乙個數字只能參與一次配對,可以不參與配對。在獲得的價值總和不小於 0 的前...

C 數字配對 (網路流 最大費用最大流)

題目大意 中文題目 具體思路 用網路流的思想,我們求得是最大的匹配數,那麼我們按照二分圖的形式去建邊就可以了,加上超級源點和超級匯點,就可以用網路流跑了。建邊的時候,我們首先把每個數進行素因子分解,看一下當前的這個數能夠被分解成多少個素數,奇數個的放在乙個陣列裡,偶數個的放在另乙個陣列裡面 如果兩個...

網路流 費用流

這個好像不考 沒事可以騙分 費用流,顧名思義,就是有費用的流,也就是說,給乙個網路流圖中的每條弧增加乙個單位流量費用。一般來說求解的費用流都是最大流最小費用。好像沒什麼好bb的 這裡推薦使用zkw演算法求解最小費用流,看著 理解就行,應該還是很好理解的。zkw演算法在稠密圖上跑得飛快,在稀疏圖上還不...