費用流 SCOI2007 修車

2021-10-09 11:03:36 字數 987 閱讀 6753

同一時刻有 nn 位車主帶著他們的愛車來到了汽車維修中心。

維修中心共有 mm 位技術人員,不同的技術人員對不同的車進行維修所用的時間是不同的。

現在需要安排這 mm 位技術人員所維修的車及順序,使得顧客平均等待的時間最小。

說明:顧客的等待時間是指從他把車送至維修中心到維修完畢所用的時間。

對於每乙個修車工拆成n個點,表示他這輛車是倒數第i個修的

我們發現這樣每乙個點都可以表示有多少個人在等

所以我們對於每輛車向原點連費用為0流量為1的邊,車和修理工之間按題意連,修理工向匯點連0,1的邊,跑費用流就行

#include

const

int n=

1e5+

5,m=

2e5+5;

int n,m,s,t,num=

1,ls[n]

,dis[n]

,flow[n]

,last[n]

,pre[n]

,maxflow,mincost;

bool vis[n]

;struct e

e[m]

;std::queue <

int> q;

void

add(

int u,

int v,

int w,

int val)

,ls[u]

=num;

e[++num]

=(e)

,ls[v]

=num;

}bool

spfa()

}return dis[t]

!=0x3f3f3f3f;}

void

mcmf()

}}intmain()

}mcmf()

;printf

("%.2lf\n"

,1.0

*mincost/n)

;}

SCOI2007 修車(費用流)

好像大家似乎都在籌備退役滾粗文化課的後事了,我是不是也應該準備了?不過我不想退役啊55555 很好,這個記性 魚,zkw板子還是背不熟,我 這道題看似很狗,不過只要我們能想到將乙個工人對於每輛車拆成n份來看的話就會簡便許多,這樣的話,等待時間就被我們具體化了,不再是抽象的,因此把n輛車和m n個工人...

SCOI2007 修車 題解

上古網路流題 為了便於考慮每個決策的貢獻,把每個工人的決策拆成n個彼此獨立的決策 即其修的倒數第i個車是什麼。因為此車後 含此車 有i人要多等t,故貢獻為t n 以此拆點建圖,以貢獻為費用跑 二分圖 費用流即可,由費用流性質可知每人修車順序必合法 注意本題n,m順序有點反常 include incl...

SCOI2007 最小費用最大流 修車

需要一定思考才能建出模型的費用流。設有n輛車,m個維修人員 每輛車看作乙個點u,連邊s u,容量為1,費用為0 然後將每個維修人員拆成n個點,連邊u v 容量為1,費用為k time u v k表示拆分的n個點中的第k個點 實際意義為第v個維修人員在倒數第k個位置修第u輛車 最後對於所有與維修人員相...