BFS
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
HDU 5025图论之BFS
点击打开链接题意:从K走到T,S为怪,走的时候就多花费一秒,走到T时收集m把不同的钥匙,但是规定收集n之前,必须1~n-1全部收集完毕,怪最多有5个思路:怪最多就有5个,然后钥匙是1~9把,我们每个点的状态就不会很多,在BFS时每个点的状态进行标记就行了,5个怪状态压缩着判断,因为这个怪在第二次经过的时候已经死了,不用花费时间去杀死它#include #include #include原创 2016-03-23 16:15:18 · 635 阅读 · 0 评论 -
HDU 5336 BFS
点击打开链接题意:有n个水池,每个水池目前的水滴数量给你了,一旦水池中的水滴数量大于4,这个水池就会爆,并且分成四个水滴向四个方向出发,水滴只有两种情况,一是走出地图二是碰到水池,现在给你一个爆炸点,这个点会向四个方向发射水滴,问你t秒后的所有点的状态,水滴一秒移动一个格思路:就是用bfs去模拟一下每个水滴的状态,因为时间是10000,而水池共有100个,那么最坏的复杂度就是4000000原创 2016-07-05 20:28:22 · 1652 阅读 · 0 评论 -
HDU 5335 BFS
点击打开链接题意:从左上角走到右下角的路径中要求所有数字组成的二进制最小思路:考虑如果第一个元素不是1的话,该怎么办,因为要求前缀0不输出,那么我们找到所有的0可以走到的1,然后在处理,因为要这个二进制数最小,所以它的长度越短越好,那么对于所有0到达的第一个1,我们找到与终点的最近距离,然后将满足的全部放进容器中,如果第一个是1的话,也一样进去的只能是第一个元素,然后现在的元素到终点的距离原创 2016-07-05 18:51:26 · 1739 阅读 · 0 评论 -
HDU 3619 BFS+优先队列
点击打开链接题意:给一个地图,从S走到T,然后给了钥匙的位置,地图上数字点代表如果走这个点则要消耗数字的能量,而A到E是门,一个钥匙可以开一类门,问最少消耗多少能量就可以走到T思路:对于钥匙来说,直接用状态压缩判断钥匙是否取过,然后因为是要走最小的花费,那么要用优先队列,没什么可以注意的,就是一个钥匙可以开一类门,而不是只能开一个门,注意着谢谢就应该能过,并不难的一道BFS#include原创 2016-07-15 14:34:35 · 951 阅读 · 0 评论 -
HDU 4308 BFS+优先队列
点击打开链接题意:从Y走到C,#代表不能走,走*的话要花费C元,P是传送门可以到达任意一个P,问最小花费思路:直接优先队列模拟一下就行,BFS搜一下,P直接记录,遇到了就判断它能到达的点能不能走就行了,easy#include #include #include #include #include #include using namespace std;typedef lo原创 2016-07-14 20:11:40 · 1400 阅读 · 0 评论 -
FZU 2150 BFS
点击打开链接题意:一个地图上有许多草堆,每次可以选择两个草堆点燃,这两个可以使一个,然后每秒它会烧到相邻的四个草堆,若是空地则不再燃烧思路:我们可以将每个草堆点燃的所有时间处理出来,然后枚举任意两个求一下就行了#include #include #include #include #include #include #include using namespace std;原创 2016-07-03 13:47:42 · 1556 阅读 · 0 评论 -
HDU 3582 BFS
点击打开链接题意:迷宫从起点走到终点,问能否走到,K是钥匙,L是门,每个钥匙只能用一次然后*是障碍,点是空地思路:这题开始写到AC竟然错了30+,20+的MLE,因为自己写SB了,先说说我MLE的经验把,对于一把钥匙来说,我只能捡一次但是对于不同状态来的是要区分的,之前我写的就是不管什么状态来的我都要把钥匙捡起来,MLE,发现后又WA了几发,我们在队列里的状态要把哪个钥匙捡起来做个标记,防原创 2016-07-02 21:06:55 · 2076 阅读 · 0 评论 -
HDU 3468 网络流+BFS
点击打开链接题意:给一个地图,#不可走,*是金子,然后一个人从A开始走,它的下一个点必须是B,以此类推,而且他走的必须是最短路径,最短路径有多条的话随便哪条都可以,然后在走一次的时候,他在路过金子的时候可以捡一个金子,但是在一次路径内他只能捡一个金子,如果他不能将所有的字母全部走过,则输出-1思路:上午就开始写的一道题目,刚开始的思路是先将所有的金子点和字母点全部记下来,然后字母从A开原创 2016-06-14 14:51:02 · 940 阅读 · 0 评论 -
HDU 3533 BFS+优先队列
点击打开链接题意:给一个题中的图,然后从0 0走到m n,然后有d点能量,问能否走到,走到最少需要多少步,还有k个塔,每个塔有坐标和子弹速度和发射的时间间隔,人可以停可以上下左右走,若被打死就不能走到终点,子弹在穿过另一个塔时就停下来,而且只有在人停在某一个位置时并且这个时间有子弹落在这个坐标则人就死了思路:对于最少的步数,优先队列比较给力,然后就是怎么走的问题,对于这道题来说,一个点的状原创 2016-06-24 17:23:36 · 1897 阅读 · 0 评论 -
HDU 3442 优先队列+BFS
点击打开链接题意:刘备从起点走到终点,可以走的路块是'.'或者‘C'和起点和终点,然后给了A到E,代表了5种伤害,然后对于每种伤害只能对人造成伤害一次,解释一下样例应该就行了,刘备先向左走一次,受到A的一点伤害和B的两点伤害,然后走回来,虽然也在A和B的攻击范围,但是我已经受过它们的伤害所以不会再次受伤害,然后向下走,收到C的3点伤害,然后再向下,一样C已经对刘备造成过伤害,所以不再添加伤害,原创 2016-06-08 13:29:37 · 731 阅读 · 0 评论 -
coderforces 455C 并查集+树的直径
点击打开链接题意:有两种操作,1是问有u的最长路径的长度,2是将u与v的两个集合合并,但是要使得合并后的集合的最长路径最小思路:因为后面的操作才会改变路径长度,可以先将所有长度预处理出来,在一个集合的元素最长路径相同,然后再执行询问操作,就是这个预处理真的是醉了,就是两次BFS求出最大值,但是很有可能超时,因为如果两个点在一个集合,就要走150000次,然后再判断到每个点的最大值,原创 2016-05-28 19:16:12 · 3120 阅读 · 0 评论 -
UESTC 686 BFS
点击打开链接题意:问你这个人从1开始走能不能将这个图走遍,有的点是锁着的,需要对应房间的钥匙思路:就是个BFS,不能走的点先记录下来,然后判断这里面的点有钥匙可以打开的便出来跑,直到没有这样的点为止,判断是不是所有的点都到了,判断输出即可,感觉数据有点弱.......(/ □ \)#include #include #include #include #include #原创 2016-05-25 21:40:19 · 3476 阅读 · 0 评论 -
HDU 3681 BFS
点击打开链接题意:在一个地图中,D代表不能走,F代表起点,S为空地,Y是要收集的东西,然后G是加油站,每走一步消耗一点能量,到加油站可以加满油,但一个加油站只能用一次,问从起点出发将所有Y收集所需要的最小的油箱容量思路:这题我们可以先不管油箱直接走看需要多少步可以将所有的Y收集,若不能直接-1,然后二分这个最小的油箱的容量,里面的加油站和Y都用状态压缩来判断就行,唯一注意的就是对于一个状态原创 2016-07-09 13:48:21 · 1340 阅读 · 0 评论