修車車嘍~
注意建圖的時候不僅要關注第$i$輛車給第$j$個人修,還要排是第幾個修,所以乾脆直接拆成$n*m$個點代表$i,j$,連向$k$次序點。邊費用應該是後面$(n-k)輛的等待時間+這輛修的時間=(n-k+1)*a(當前這輛所需時間)$
又背了乙個板子叻!打卡完成今日任務!
貼上以前的醜醜**,略微修改。
#include#include#include
#include
#define oo 2147483647
using
namespace
std;
#define ll long long
intm, n;
const
int n = 100005
;const
int m = 2000005
;int
s, t;
ll stot = 1
, tov[m], f[m], nex[m], h[n], w[m];
void add ( int u, int v, int ff, int
ww )
ll mincost;
double
maxflow;
ll vis[n], dis[n], preu[n], prei[n];
queue
< int >q;
bool
spfa ( ) }}
} return dis[t] }void
doge ( )
u =t;
while ( u !=s )
mincost += delta *dis[t];
maxflow +=delta;
}int
main ( )
}for ( int i = 1; i <= m*n; i ++)
add ( s, i,
1, 0
);
for ( int i = n*m+1; i <= n*m+n; i ++)
add ( i, t,
1, 0
);
while
( spfa ( ) )
doge ( );
printf (
"%.2lf
", 1.0*mincost/n );
return0;
}
最小費用最大流模板
const int n 1010 點 const int m 2 10010 邊 const int inf 1000000000 struct nodee m int next1 m point n dis n q n pre n ne ne為已新增的邊數,next,point為鄰接表,dis為花...
最小費用最大流模板
一 最小費用最大流的模型 在保證流量最大的前提下,所需的費用最小,這就是最小費用最大流問題 帶有費用的網路流圖 g v,e,c,w v 頂點 e 弧 c 弧的容量 w 單位流量費用。任意的弧對應非負的容量c i,j 和單位流量費用w i,j 滿足 流量f是g的最大流。在f是g的最大流的前提下,流的費...
最小費用最大流 模板
因為含有負權邊,所以使用spfa進行增廣。指定流量的最小費用流可以初始化乙個f,然後每次一直迴圈到f 0為止。函式返回的是最大流,當然經過少量修改可以返回最小費用,利用最小流量乘以相應的費用即可。prevv記錄父節點,preve記錄當前節點對應父節點的第幾條邊。const int inf 0x3ff...