bzoj1570
购买的机票限制和数据范围很容易想到是网络流
不难想到每个城市按时刻拆点,这也是一个经典模型
由于时间不会太大,我们穷举时间,不断在残留网络上建图,跑最大流
直至总流量为k即可
- const inf=;
- type node=record
- po,next,flow:longint;
- end;
- var e:array[..] of node;
- a,b,c,p,numh,h,d,cur,pre:array[..] of longint;
- s,max,t,ans,i,n,m,k,len:longint;
- function min(a,b:longint):longint;
- begin
- if a>b then exit(b) else exit(a);
- end;
- procedure add(x,y,f:longint);
- begin
- inc(len);
- e[len].po:=y;
- e[len].flow:=f;
- e[len].next:=p[x];
- p[x]:=len;
- end;
- procedure build(x,y,f:longint);
- begin
- add(x,y,f);
- add(y,x,);
- end;
- function sap:longint;
- var u,i,j,tmp,neck,q:longint;
- begin
- sap:=;
- u:=;
- fillchar(numh,sizeof(numh),);
- fillchar(h,sizeof(h),);
- for i:= to max do
- cur[i]:=p[i];
- cur[t]:=p[t];
- numh[]:=max+;
- neck:=inf;
- while h[]<max+ do
- begin
- d[u]:=neck;
- i:=cur[u];
- while i<>- do
- begin
- j:=e[i].po;
- if (e[i].flow>) and (h[u]=h[j]+) then
- begin
- neck:=min(neck,e[i].flow);
- pre[j]:=u;
- cur[u]:=i;
- u:=j;
- if u=t then
- begin
- sap:=sap+neck;
- while u<> do
- begin
- u:=pre[u];
- j:=cur[u];
- dec(e[j].flow,neck);
- inc(e[j xor ].flow,neck);
- end;
- neck:=inf;
- end;
- break;
- end;
- i:=e[i].next;
- end;
- if i=- then
- begin
- dec(numh[h[u]]);
- if numh[h[u]]= then break;
- q:=-;
- tmp:=max+;
- i:=p[u];
- while i<>- do
- begin
- j:=e[i].po;
- if (e[i].flow>) then
- if h[j]<tmp then
- begin
- tmp:=h[j];
- q:=i;
- end;
- i:=e[i].next;
- end;
- h[u]:=tmp+;
- cur[u]:=q;
- inc(numh[h[u]]);
- if u<> then
- begin
- u:=pre[u];
- neck:=d[u];
- end;
- end;
- end;
- end;
- begin
- len:=-;
- fillchar(p,sizeof(p),);
- readln(n,m,k);
- build(,,k);
- for i:= to m do
- readln(a[i],b[i],c[i]);
- t:=;
- ans:=;
- repeat
- for i:= to m do
- build(ans*n+a[i],(ans+)*n+b[i],c[i]);
- for i:= to n do
- build(ans*n+i,(ans+)*n+i,inf);
- build((ans+)*n+n,t,inf);
- max:=(ans+)*n+n;
- inc(ans);
- s:=s+sap;
- until s=k;
- writeln(ans);
- end.
bzoj1570的更多相关文章
- 【BZOJ1570】[JSOI2008]Blue Mary的旅行 动态加边网络流
[BZOJ1570][JSOI2008]Blue Mary的旅行 Description 在一段时间之后,网络公司终于有了一定的知名度,也开始收到一些订单,其中最大的一宗来自B市.Blue Mary决 ...
- 【BZOJ-1570】BlueMary的旅行 分层建图 + 最大流
1570: [JSOI2008]Blue Mary的旅行 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 388 Solved: 212[Submit ...
- BZOJ1570 [JSOI2008]Blue Mary的旅行
建分层图,每一层表示一天的情况 从S向第0层的1号点连边,每层的n向T连INF的边 枚举天数,每多一天就多建一层然后跑最大流,如果当前流量大于人数则输出答案 由于路径长度不会超过n,因此tot个人走这 ...
- bzoj1570: [JSOI2008]Blue Mary的旅行(二分+网络流)
1570: [JSOI2008]Blue Mary的旅行 题目:传送门 题解: get到拆点新姿势,还是做题太少了...ORZ 因为每天就只能有一个航班,那就不能直接连了,所以要拆点(然后就被卡住了) ...
- 【bzoj1507】 JSOI2008—Blue Mary的旅行
http://www.lydsy.com/JudgeOnline/problem.php?id=1570 (题目链接) 题意 给出$m$个航班,每天只能做一次飞机,有$T$人从起点到终点,问最晚到达的 ...
随机推荐
- Java分布式处理技术(RMI,JDNI)
http://hedaoyuan.blog.51cto.com/4639772/813702 1.1 RMI的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocatio ...
- windows 定时任务
创建定时任务 创建定时任务,时间间隔为1min,开始时间为04:00:00,任务名称为backupSchedule,运行当前目录下的copyData.bat脚本 schtasks /create /s ...
- 注册dll
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syste ...
- use mkisofs 重新打包beini,tinycore linux
mkisofs -r -J -V Beini-Custom -v --boot-info-table --boot-load-size 4 -b boot/isolinux/isolinux.bin ...
- Codevs 1690 开关灯 USACO
1690 开关灯 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description YYX家门前的街上有N(2<=N& ...
- What is the Xcopy Command?:
Quote from: http://pcsupport.about.com/od/commandlinereference/p/xcopy-command.htm The xcopy command ...
- jsp a标签传值到action中,action接收不到传值
因为需求,今天在action中加了一个marker属性,尝试了很多方法 set,get方法也生成了,但是就接收不到值. 这时我注意到action中有我之前使用ajax请求数据返回json格式数据,不以 ...
- ASP.Net大文件上传组件详解
首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Best ...
- Spring框架的初步学习
(1) IOC 控制反转 所谓的控制反转就是应用本身不负责依赖对象的创建和维护,依赖对象的创建及维护是由 外部容器负责的(spring是外部容器之一).这样控制权就由应用转移到了外部容器,控制权 的转 ...
- python 自动化之路 logging日志模块
logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...