同一時刻有 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輛車 最後對於所有與維修人員相...