题解:
首先floyd或者bfs求出每个'.'到各个'D'的最短路
然后注意一个点不能经过一个门去另一个门,所以可以看到我的floyd略有一点点点点不同。。。
然后这个时间限制可以转化为对每个门的拆点,可以证明拆400个就够了。
然后分别对应每个时间可以出去一个人,
而这样在二分时重建图也是很方便的,
代码:
#include
#include
#include...
分类:
其他好文 时间:
2015-02-09 09:29:08
阅读次数:
205
题解:刚开始一直在想堵在一块儿的情况怎么办?发现不会。。。结果看题解发现不用考虑T_T http://blog.sina.com.cn/s/blog_76f6777d01015ogm.html代码:调的蛋疼。。。 1 #include 2 #include 3 #include 4 #inc...
分类:
其他好文 时间:
2014-12-20 20:50:09
阅读次数:
240
【法一】枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意dis的初值0x7f)#include#include#includeusing namespace std;#defin...
分类:
其他好文 时间:
2014-12-20 10:24:27
阅读次数:
232
题目大意:给定一个m*n的地图,每个点有可能是空地、墙或者出口,每个空地初始站着一个人,每一时刻可以向周围走1格,门每一时刻只能通过一个人,求最短多少时间后所有人可以撤离
首先从每个出口出发开始广搜,得到每个空地到所有出口的距离
然后二分答案,每次建图如下:
从源点向每个空地一条流量为1的边
如果一个空地能在规定时间到达某个出口,就从这个空地出发向该出口链接一条流量为1的边
每个出口向汇...
分类:
其他好文 时间:
2014-11-29 14:41:13
阅读次数:
181
题目大意:紧急疏散。有一张地图,‘.’表示人,‘D’表示门,人需要走曼哈顿距离的单位时间才1能到达门。一个门一个时刻只能通过一个人。求多长时间能疏散完毕。
思路:二分答案+最大流满流判定。先BFS处理出每个人与门的距离。二分最小时间,然后连边。S向每个人连流量为1的边,每个人向二分的时间之内能到达的门连流量为1的边。每个门向T连流量为t的边。然后最大流判定是否满流。
(数组大小我是瞎开...
分类:
其他好文 时间:
2014-10-02 19:42:43
阅读次数:
227