傳送門
非常水的網路流
看到這麼多限制,還有變化的邊權…網路流沒跑了
每個點拆分為入點和出點,中間連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演算法在稠密圖上跑得飛快,在稀疏圖上還不...