[wikioi 1034][CTSC 1999]家园(网络流)
由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了新的绿地,以便在需要时移民。令人意想不到的是,2177年冬由于未知的原因,地球环境发生了连锁崩溃,人类必须在最短的时间内迁往月球。
现有n个太空站处于地球与月球之间(编号1..n),m艘公共交通太空船在其中来回穿梭,每个太空站Si可容纳无限的人,每艘太空船pi只可容纳Hpi人。对于每一艘太空船pi,将周期性地停靠一系列的太空站(Si1,Si2…Sir),如:(1,3,4)表示停靠太空站1 3 4 1 3 4 1 3 4 …。 任一艘太空船从任一个太空站驶往另一个任意的太空站耗时为1。人只能在太空船停靠太空站(或地球、月球)时上船或下船。初始时的人全在地球上,太空船全在初始站(太空船pi处于Si1),目标是让所有的人尽快地全部转移到月球上。
输入描述 Input Description
文件第一行为三个正整数 n(太空站个数)、 m(太空船个数)、 k(需要运送的地球上的人的个数),其中 1<=m<=13, 1<=n<=20, 1<=k<=50。
接下来的n行给出了太空船的信息,第i+1行说明太空船pi,此行第一个数表示pi可容纳的人数Hpi,第二个数表示pi停靠一个周期的太空站个数r,1<=r<=n+2, 随后r个数便是停靠的太空站的编号(Si1,Si2,…,Sir), 地球用0表示,月球用-1表示。0时刻时,所有太空船都在初始站,随后开始运行,在时刻1,2,3…等正点时刻各艘太空船停靠相应的太空站,即人只有在0,1,2…等正点时刻才能上下太空船。
输出描述 Output Description
文件只有一个数,若问题有解,输出完成全部人员安全转移的时刻,否则输出0。
样例输入 Sample Input
2 2 1
1 3 0 1 2
1 3 1 2 –1
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
1<=m<=13, 1<=n<=20, 1<=k<=50。
分析:这题是黑书上的例题(P325)我觉得很好……
这是网络流的一个类型,即动态流问题:题目要求的不是能送最多多少人,而是限定了流量,求最少需要多少时间。我们面临着难题,一般的流网络无法表示两点间不同时刻的不同容量和流量,因此我们要拆点。
如果最短时间是t,就把每个点Vi(包括源点和汇点)拆成Vi0,Vi1,Vi2,……,Vit这t+1个点,这样太空船在t-1时刻从vi出发在t时刻到达Vj就可以表示成Vit-1~~~Vjt,如果C(Vit-1,Vjt)=a,f(Vit-1,Vjt)=b则可以表示成太空船可以容纳a人,此时正载有b人;又因为每个太空站可以容纳无限的人停留,所以对于每个Vit-1都应有一条容量无限大的边指向Vit。源就是V00点,汇就是V-1t点,从源到汇的流量就表示到时刻T为止从地球到月球输送的总人数。至于T直接从小到大枚举就行,卡个时或者卡个T,超过就输出0
让我们来总结一下算法:
拆点
每次时间 T++,
{
然后每个节点(空间站,地球,火星)增加一个分点。
对于每次的T 由 第i个节点的T号分点 向第 i个节点的(T+1)号分点连一条容量无限的边 再由 第j艘飞船T时刻所在空间站的T号分点 向 第j飞船T+1时刻所在空间站的T+1号分点 连一条容量为h[j]的边
跑一遍sap k=k-ow
如果 k小于等于0 输出此刻的T
如果T大于100(数据比较弱,做下来运完的都在100以内) 输出0
}
[wikioi 1034][CTSC 1999]家园(网络流)的更多相关文章
- CTSC 1999 家园 【网络流24题】星际转移
直接把每一个点,每一天拆成一个点. 然后每个点到下一天连$inf$的边. 然后把飞船的路径用容量为飞船容量的边连接. 然后跑网络流判断是否满流. #include <queue> #inc ...
- [CTSC 1999]拯救大兵瑞恩&[网络流24题]孤岛营救问题
Description $1944$ 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫 ...
- CODEVS_1034 家园 网络流 最大流
原题链接:http://codevs.cn/problem/1034/ 题目描述 Description 由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了 ...
- 【题解】CTSC1999家园(网络流)
CTSC1999家园 建模方法类似我NOI2019网络同步赛我的T1写法[[题解]NOI2019Route](70分) 问题的焦点是:空间时间载具. 考虑如何击破时间限制,可以对每个点关于每个时刻建立 ...
- wikioi 1034 家 实时动态的网络流量(费用流)
因为随着时间的推移.网络侧变得,因此,常见的网络流量也解决不了这个问题,.如果T毕竟运输时间. 为此.我们可以基于时间分割点,所有的点将被分割为T点. 对于每一个点,下一次甚至一个容量为本人INF边缘 ...
- 「hdu 4845 」拯救大兵瑞恩 [CTSC 1999](状态压缩bfs & 分层图思想)
首先关于分层图思想详见2004的这个论文 https://wenku.baidu.com/view/dc57f205cc175527072208ad.html 这道题可以用状态压缩,我们对于每一把钥匙 ...
- 【wikioi】1034 家园(最大流+特殊的技巧)
http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...
- 【wikioi】1922 骑士共存问题(网络流/二分图匹配)
用匈牙利tle啊喂?和网络流不都是n^3的吗(匈牙利O(nm), isap O(n^2m) 但是isap实际复杂度很优的(二分图匹配中,dinic是O(sqrt(V)*E),不知道isap是不是一样. ...
- 【CODEVS】1034 家园
[算法]网络流-最大流(dinic) [题解] 飞船有可承载人数限制,地球为源点,月球为汇点,人像水流一样从以飞船上限为容量的边流向汇点. 人在各站点都面临着上船与否的选择,难以用DP解决最优策略,于 ...
随机推荐
- 第一次wubi安装Ubuntu的经历及所走的弯路
#安装目标:利用xp存储剩余空间安装ubuntu, 形成双系统. 整理出待安装的磁盘空间 #需要无损磁盘工具, 用了"傲梅分区助手", 偷懒没有选其他高大上的英文软件. XP下硬盘 ...
- LeetCode题解-----Median of Two Sorted Arrays
题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of t ...
- 【C#】C# 实现发送手机短信
现在很多网站都是短信发送的功能,怎么实现的呢.对于个人站长来说的话,通过使用SMS短信通API接口相对比较划算和简单.那怎么实现呢,步骤如下: 1. 从网上(http://sms.webchinese ...
- [转载]ExtJs4 笔记(7) Ext.tip.ToolTip 提示
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- HDU 4041 Eliminate Witches! --模拟
题意: 给一个字符串,表示一颗树,要求你把它整理出来,节点从1开始编号,还要输出树边. 解法: 模拟即可.因为由括号,所以可以递归地求,用map存对应关系,np存ind->name的映射,每进入 ...
- JavaWeb学习----http协议
一.什么是HTTP协议: 1.概念: 客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式(规定客户端和服务器如何 ...
- JMeter学习参数化User Defined Variables与User Parameters
偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近,刚开始时我也没注意,两者有什么不同.使用时却发现两者使用场景有些不同,现在小结一 ...
- typicalapp.js
/** * 1.找出数字数组中最大的元素(使用Math.max函数) 2.转化一个数字数组为function数组(每个function都弹出相应的数字) 3.给object数组进行排序(排序条件是每个 ...
- OXM
O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...
- Windows客户端C/C++编程规范“建议”——风格
本文来自:http://blog.csdn.net/breaksoftware/article/details/37935459 命名风格也非常适用于C# 9 风格 9.1 优先使用匈牙利命名法 等级 ...