搜索-bfs
文章平均质量分 71
iHge2k
专注数据结构和算法
展开
-
loj 1055(bfs)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26772 思路:注意判重就行,开个6维数组记录3个robots的位置,然后要注意的就是不能多个robots同时在一个格子上,一开始没注意到这点! 1 #include 2 #include 3 #include 4 #include 5原创 2014-05-26 18:07:52 · 430 阅读 · 0 评论 -
loj 1046(bfs)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26766 思路:由于数据不是很大,我们可以枚举骑士最后聚集的位置,然后枚举的时候用bfs搜索即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include原创 2014-05-26 18:07:50 · 405 阅读 · 0 评论 -
hdu 3760(2次bfs求最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3760 思路:首先是建反图,从点n开始做spfa求出n到各点的最短路,然后从1点开始搜最小序列,对于边(u,v),若dist[u]==dist[v]+1,则要将当前的序号加入当前队列中,然后就是对于那些序号相同点的都要加入当前队列,还要判一下重。至于为什么要建反图从n点开始求最短路,因为在搜最小序列的原创 2014-05-26 18:06:49 · 317 阅读 · 0 评论 -
hdu 3085(双向bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3085 思路:双向广搜,每次从M出发,搜三步,从G出发,搜一步,然后就是判断是否走到对方已经走过的格子,至于魔王的判断,可以用曼哈顿距离。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using na原创 2014-05-26 18:05:56 · 367 阅读 · 0 评论 -
hdu 4294(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4294 思路:题目的意思是说,给你n,k,则求出n的正整数倍数,使得这个数字在k进制下表示的时候需要的不同数字最小。首先明确最多的不同数字需要2种,证明如下a,aa,aaa,aaaa,......找出n个连续的,那么中间至少有两个mod n的值是相等的,那么这两个数字相减,得到aaa...000肯定能原创 2014-05-26 18:05:50 · 600 阅读 · 0 评论 -
poj 3249(bfs+dp或者记忆化搜索)
题目链接:http://poj.org/problem?id=3249 思路:dp[i]表示到点i的最大收益,初始化为-inf,然后从入度为0点开始bfs就可以了,一开始一直TLE,然后优化了好久才4000ms险过。 之后有写了个dfs记忆化搜索,果然快多了。 bfs AC code: 1 #include 2 #include 3 #include 4 #inclu原创 2014-05-26 18:04:55 · 328 阅读 · 0 评论 -
poj 3635(bfs+优先队列)
题目链接:http://poj.org/problem?id=3635 思路:本题主要运用的还是贪心思想,由于要求st->ed的最小花费,那么每经过一个城市,能不加油就尽量不加油,用dp[i][j]表示在顶点i,剩余燃料为j是的最小花费,于是每走到一个城市,可以选择不加油,也可以选择加1,2,3...,个单位的油,然后用优先队列来保存每个状态,如果有更小的花费,就入队列,这样直到第一次到达终点,原创 2014-05-26 18:02:56 · 459 阅读 · 0 评论 -
hdu 1983(bfs+dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1983 思路:算得上是暴力解放了。。。orz...由于最多封锁4个区域,因此直接dfs枚举,bfs暴搜即可!!!跑了将近4000ms啊... 1 #include 2 #include 3 #include 4 #include 5 using namespace std;原创 2014-05-26 17:59:13 · 331 阅读 · 0 评论 -
hdu 4308(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4308 思路:就是一般的广搜,然后要注意的地方就是位置P了,一次把所有的都入队列,然后标志置为true。别的的话就是随便搞搞就行了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6原创 2014-05-26 17:59:20 · 361 阅读 · 0 评论 -
hdu 1226(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1226 思路:广搜,每一个状态用一个结构体来保存,记录数组的长度,然后根据长度来扩展就可以了,这里值得注意的地方余数判重以及求大数取模。 View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6原创 2014-05-26 17:58:48 · 399 阅读 · 0 评论 -
hdu 4394(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4394 思路:n的个位可以由m的个位确定,n的十位可以由m的个位和十位确定,以上同理,故直接bfs搜索就可以,先搜个位满足要求的,然后在满足要求的个位上扩展到十位上(其实就是就是在个位数前加个数,变成2位数)。 View Code 1 #include 2 #include 3 #原创 2014-05-26 17:58:02 · 732 阅读 · 0 评论 -
hdu 1429
hdu上的这道题可把我给坑惨了,一直都是runtime error,思想我感觉没错,可惜一直找不到原因。。。。 好吧,看的我眼都快花了,直接贴代码了,bfs+位压缩。。。 所谓的位压缩就是用一个整数来保存几个事物的有无状态。我们知道每个整数对应一个二进制,二进制就是01串,而0对应的就是无,1对应有,这样几个事物的有无就可以确定一个二进制串,进而可以确定一个整数。故用整数保存几个事物的有无状态原创 2014-05-26 17:50:52 · 577 阅读 · 0 评论 -
hdu 2128(bfs)
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=2128 思路:这题判重比较麻烦,我是这样做的:每个状态记录炸弹数目以及爆破点的坐标映射,还要有一个访问数组来标记已经取过的炸弹的位置(下次经过就不能再取了),由于要求时间最短,可以考虑优先队列。 1 #include 2 #include 3 #include 4 #incl原创 2014-05-26 18:00:54 · 431 阅读 · 0 评论 -
loj 1377 (bfs)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1377 思路:这道题只要处理好遇到"*"这种情况就可以搞定了。我们可以用一个vector向量来记录所有的“*”,然后用一个3维数组来判重,并且对于每个状态都加一个标记,判断是否需要立刻转移,值得注意的是转移过后,vector应该立刻清空。 1 #include 2原创 2014-05-26 18:09:21 · 376 阅读 · 0 评论 -
hdu 1252
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1252 题意都读了半天,orz... 给出n个结点,每两个结点之间都有一个线路想通,不过有不同的颜色,然后给三个piece,分别在三个初始位置,piece移动的条件是通过的路径的颜色必须要与另外两个piece所在位置之间的路径颜色想同,求使三个点移动到同一个位置上所需要的最小步数…… 开个三位数组原创 2014-05-26 17:58:52 · 375 阅读 · 0 评论 -
loj 1165(bfs+康托展开)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26879 思路:题目意思很简单,就是通过一些位置的交换,最后变成有序数列,对于一组序列,我们可以用康托展开然后hash判重。 然后就是普通的bfs,稍微留意一下细节即可。 1 #include 2 #include 3 #include原创 2014-05-26 18:07:54 · 453 阅读 · 0 评论 -
hdu 4528(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4528 思路:结构体里面不仅要记录x,y,time,还要有2个bool型来记录是否看到二明和大明,因此,对于状态判重,开个4位数组mark[x][y][tag1][tag2],因为根据看到的人不同,我这个点(x,y)还是可以 重复走的,最后就是关于怎么来判断看到的人了,这儿我用了最暴力的方法,就是一开原创 2014-05-26 17:59:47 · 355 阅读 · 0 评论 -
loj 1185(bfs)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26898 思路:我们可以给定有直接边相连的两点的距离为1,那么就是求源点出发能够走偶数步的所有的点的个数。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inclu原创 2014-05-26 18:07:57 · 372 阅读 · 0 评论 -
poj 3414(简单bfs)
题目链接:http://poj.org/problem?id=3414 思路:bfs简单应用,增对瓶A或者瓶B进行分析就可以了,一共6种状态。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 struct Node{原创 2014-05-26 18:05:42 · 513 阅读 · 0 评论 -
hdu 2354(bfs求最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2354 思路:初始化step[][]==inf,然后如果当前点p.step 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 1<<原创 2014-05-26 18:00:35 · 461 阅读 · 0 评论 -
hdu 1973+hdu 2364+hdu 2416+hdu 2822+hdu 2645(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1973 思路:简单bfs,先打个素数表,然后就是广搜搞一下就ok了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #includestring> 7 using namespace std;原创 2014-05-26 17:59:07 · 672 阅读 · 0 评论 -
hdu 2216+hdu 1104
贴几道bfs题。 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2216 思路:用一个四维的数组来保存状态,然后就是一般的bfs了,不过要注意的S,Z的初始位置要置为'.'(这个地方debug了好久,orz...). View Code 1 #include 2 #include 3 #include 4 #inc原创 2014-05-26 17:59:03 · 492 阅读 · 0 评论 -
hdu 1240(三维bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240 思路:就是一个简单的bfs,但我搞了好久啊,有一个trick一直没注意到,然后第二组数据就一直过不了。。。 View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 using name原创 2014-05-26 17:58:00 · 350 阅读 · 0 评论 -
hdu 1254 推箱子游戏
这个题目我就不说,链接在这里http://acm.hdu.edu.cn/showproblem.php?pid=1254 主要我想说的是,一开始是我用2个三围数组来分别标记人和箱子走过的四个方向,但不知怎么回事行不通。。。 于是就用一个四维数组来标记状态,嘻嘻,过了。。。 好吧,还是直接上代码了。。。。 1 #include 2 #include 3 #include 4原创 2014-05-26 17:50:54 · 443 阅读 · 0 评论 -
hdu 1067(hash+bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1067 思路:学会了手写Hash。。。orz....纪念一下。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 1原创 2014-05-26 17:58:58 · 376 阅读 · 0 评论 -
hdu 3681(bfs+二分+状压dp判断)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681 思路:机器人从出发点出发要求走过所有的Y,因为点很少,所以就能想到经典的TSP问题。首先bfs预处理出‘Y',’F','G'之间的最短距离,由于G点可以充电,到达G点就把当前能量更新为电池容量然后继续走。因为每个G点只能充一次电,这就好像TSP中的每个点只能走一次一样,然后就是二分答案了,用状原创 2014-05-26 18:05:37 · 483 阅读 · 0 评论 -
hdu 4474
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 思路:bfs,用pre[]来记录到达u的前一个结点,num[]来保存当前数的最后一位。 具体见代码: View Code 1 #include 2 #include 3 #include 4 const int N=10010; 5 using namespace原创 2014-05-26 17:54:13 · 471 阅读 · 0 评论 -
zoj 3820(2014牡丹江现场赛B题)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路: 原创 2014-10-17 19:14:10 · 521 阅读 · 0 评论