SCOI2007修车
这样也行?这构图把我惊呆了:
把每个工人拆成N个点。记为A[i,j]表示第i个工人修倒数第j辆车。
每个车跟所有N*M个工人拆出的点连边。流量为1,费用为time[i,j]*k。
源和每辆车连边,N*M个点和汇连边,流量都为1,费用同为0。
为什么这么构图呢?
考虑第i个工人,他修第j辆车只对后面要修的车有影响,而前面修过的车已经对当前没有影响了。
而这个影响就是后面每个将要修理的车都多等待了time的时间
其他边流量都为1是显然的,每辆车修一次,每个工人一个时段只能修理一辆车。
ps:bzoj上什么错误都是WA啊……
代码:
uses math;
const inf=maxlongint;
type node=record
from,go,next,v,c:longint;
end;
var i,j,k,n,m,ans,s,t,cnt:longint;
pre,d,first,q:array[..] of longint;
e:array[..] of node;
time:array[..,..] of longint;
procedure ins(u,v,w,c:longint);
begin
inc(cnt);
e[cnt].go:=v;e[cnt].from:=u;
e[cnt].v:=w;e[cnt].c:=c;
e[cnt].next:=first[u];first[u]:=cnt;
end;
procedure insert(u,v,w,c:longint);
begin
ins(u,v,w,c);ins(v,u,,-c);
end;
function spfa:boolean;
var head,tail,i,x,y:longint;
v:array[..] of boolean;
begin
head:=;tail:=;q[]:=s;d[s]:=;
for i:= to t do d[i]:=inf;
fillchar(v,sizeof(v),false);
v[s]:=true;
while head<tail do
begin
inc(head);
x:=q[head];
i:=first[x];
v[x]:=false;
while i<> do
begin
y:=e[i].go;
if (e[i].v<>) and (d[x]+e[i].c<d[y]) then
begin
pre[y]:=i;
d[y]:=d[x]+e[i].c;
if not(v[y]) then
begin
inc(tail);
q[tail]:=y;
v[y]:=true;
end;
end;
i:=e[i].next;
end;
end;
exit(d[t]<>inf);
end;
procedure mcf;
var i,x:longint;
begin
i:=pre[t]; x:=inf;
while i<> do
begin
x:=min(x,e[i].v);
i:=pre[e[i].from];
end;
i:=pre[t];
while i<> do
begin
dec(e[i].v,x);
inc(e[i xor ].v,x);
i:=pre[e[i].from];
end;
inc(ans,x*d[t]);
end; procedure init;
begin
cnt:=;
readln(m,n);
for i:= to n do
begin
for j:= to m do read(time[i,j]);
readln;
end;
end;
procedure main;
begin
s:=;t:=n*m+n+;
for i:= to n do insert(s,i,,);
for i:=n+ to n*m+n+ do insert(i,t,,);
for i:= to m do
for j:= to n do
for k:= to n do
insert(k,i*n+j,,time[k,i]*j);
ans:=;
while spfa do mcf;
writeln(ans/n::);
end;
begin
init;
main;
end.
SCOI2007修车的更多相关文章
- BZOJ 1070: [SCOI2007]修车 [最小费用最大流]
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4936 Solved: 2032[Submit][Status] ...
- 【BZOJ】1070: [SCOI2007]修车
1070: [SCOI2007]修车 Description 同 一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需 ...
- bzoj 1070: [SCOI2007]修车 费用流
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2785 Solved: 1110[Submit][Status] ...
- bzoj 1070 [SCOI2007]修车(最小费用最大流)
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3515 Solved: 1411[Submit][Status] ...
- BZOJ_1070_[SCOI2007]修车_费用流
BZOJ_1070_[SCOI2007]修车_费用流 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间 ...
- P2053 [SCOI2007]修车(费用流)
P2053 [SCOI2007]修车 顾客平均等待的最小时间$=$等待总时间$/n$ 考虑只有1个技术人员时,$n$辆车等待总时间 $A_1+(A_1+A_2)+(A_1+A_2+A_3)+...+\ ...
- [SCOI2007]修车(建图好题)
[SCOI2007]修车 https://www.lydsy.com/JudgeOnline/problem.php?id=1070 Time Limit: 1 Sec Memory Limit: ...
- 【BZOJ1070】[SCOI2007]修车
[BZOJ1070][SCOI2007]修车 题面 以后要多写题面flag 题目描述 同一时刻有\(N\)位车主带着他们的爱车来到了汽车维修中心.维修中心共有\(M\)位技术人员,不同的技术人员对不同 ...
- 洛谷 P2053 [SCOI2007]修车 解题报告
P2053 [SCOI2007]修车 题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术 ...
- 【BZOJ1070】[SCOI2007]修车 费用流
[BZOJ1070][SCOI2007]修车 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的. ...
随机推荐
- pyunit实现数据测试框架
PyUnit提供的动态方法,只编写一个测试类来完成对整个软件模块的测试,这样对象的初始化工作可以在setUp()方法中完成,而资源的释放则可以在tearDown()方法中完成. 使用PyUnit可以像 ...
- 针对PIL中ImageDraw.py报错的解决方案
linux mint 13开始就发现这个问题了,一直不知道怎么解决,今天突然发现了解决方案,来分享给大家 下面是修改对比,自己根据修改,这个是系统文件,需要root权限,路径/usr/lib/pyth ...
- 如何签名apk,并让baidu地图正常显示
1.选中项目,右击export Next直到完成,这样就生成了my.keystore文件 将my.keystore拷到C:\Users\Administrator\.android 利用jdk的工具生 ...
- php使用注意点
php使用时间之前要将php.ini中时区设置好,否则会报警告.截图如下:“;date.timezone =”设置为“date.timezone =Asia/Shanghai”即可. apache如果 ...
- 八、mysql视图、存储过程、函数以及时间调度器
.create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 .drop view emp_view 删除视图 ...
- 传统ASP.NET开发和MVC的设计思想
传统ASP.NET开发 第一步:客户端请求服务器: 第二步:服务器从数据库取得数据处理后响应给客户端页面. MVC的设计思想 第一步:客户端请求控制器(里面的一个方法): 第二步:控制器从数据库里取得 ...
- 使用maven 命令运行项目
安装好maven3 配置好环境变量后, 输入mvn -v 查看安装是否成功, 然后导入maven项目, 选择import 导入选择Exsting Maven Projects, 接下来就准备运行一下m ...
- 1016: [JSOI2008]最小生成树计数 - BZOJ
Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...
- 5.0:Spring-bean的加载
内容来自<Spring深度解析>,之后的不一一复述! 在Spring中,最基本的IOC容器接口是BeanFactory - 这个接口为具体的IOC容器的实现作了最基本的功能规定 - 不管怎 ...
- 【技术贴】删除360快捷搜索 ctrl+ctrl
恶心的功能,这么变态!如何删除360快捷键ctrl,桌面跳出360搜索怎么办?360 ctrl 删除 卸载方法: 桌面右下角,在360图标上右键点击设置,进入设置中心. 把 [开启快捷搜索功能,双击C ...