![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
文章平均质量分 84
ophunter
不会DP!
展开
-
poj1101The Game(记忆化搜索)
题目请戳这里题目大意:给一个n*m的地图,由'X'和空格组成,'X'表示物体,'.'表示空地。再给若干组数据,每组数据为2个坐标,问这2个坐标点之间能否连同,如果能,需要多少线段使之联通。可以借助地图外面的空间。题目分析:其实就是求给定的坐标对之间所有路径最少拐弯次数。记忆化搜索解决。给定的两点中任选1个点做起点,开始搜索,记录下其余每个点最少需要拐弯多少次到达。最后直接判断目标点状态原创 2013-12-23 16:13:36 · 1360 阅读 · 0 评论 -
hdu4490 Mad Veterinarian(简单bfs)
Mad VeterinarianTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 168 Accepted Submission(s): 58Special JudgeProblem Description原创 2013-08-11 16:27:13 · 1061 阅读 · 0 评论 -
hdu4337 King Arthur's Knights(dfs回溯)
King Arthur's KnightsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1513 Accepted Submission(s): 641Special JudgeProblem Descrip原创 2013-08-08 09:21:27 · 985 阅读 · 2 评论 -
hdu4444Walk(离散化+建图+记忆化搜索)
WalkTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1130 Accepted Submission(s): 185Problem DescriptionBiaoge is planning to原创 2013-08-05 16:40:38 · 1738 阅读 · 2 评论 -
hdu1728逃离迷宫(水bfs)
逃离迷宫Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11245 Accepted Submission(s): 2687Problem Description 给定一个m × n (m行, n列)原创 2013-08-04 20:32:41 · 1070 阅读 · 0 评论 -
hdu1226超级密码(简单bfs)
超级密码Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1713 Accepted Submission(s): 518Problem DescriptionIgnatius花了一个星期的时间终于找原创 2013-08-03 13:21:37 · 925 阅读 · 0 评论 -
poj3460&hdu1685Booksort(IDA*)
BooksortTime Limit: 15000MS Memory Limit: 65536KTotal Submissions: 1908 Accepted: 862DescriptionThe Leiden University Library has millions of books. When a stud原创 2013-08-02 23:36:40 · 1538 阅读 · 1 评论 -
A计划(水dfs)
A计划Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7492 Accepted Submission(s): 1782Problem Description可怜的公主在一次次被魔王掳走一次次被骑士们救原创 2013-08-02 09:42:38 · 910 阅读 · 0 评论 -
hdu4272 LianLianKan(dfs)
LianLianKanTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1778 Accepted Submission(s): 558Problem DescriptionI like playing原创 2013-07-24 22:43:56 · 1042 阅读 · 2 评论 -
hdu4277 USACO ORZ(dfs+set判重)
USACO ORZTime Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2278 Accepted Submission(s): 814Problem DescriptionLike everyone, co原创 2013-07-25 11:38:45 · 889 阅读 · 0 评论 -
hdu1195Open the Lock(双向bfs+循环队列)
->题目请戳这里题目大意:给2个长度为4的数字串,求从第一个串变到第二个串最少要几步。每一步变换情况有:1:每个数字+1,9+1 = 1;2:每个数字-1,1-1 = 9;3:某个数字和与其相邻的数字交换,第一个和最后一个数字不算相邻。题目分析:bfs~,这题单向bfs也可以过,不过想练习一下双向bfs,话说还是第一次写双向bfs。所以先找道简单的切。队列决定自己写,省时间原创 2013-07-05 15:59:37 · 1169 阅读 · 3 评论 -
poj1117 Pairs of Integers(简单dfs)
Pairs of IntegersTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 3622 Accepted: 905DescriptionYou are to find all pairs of integers such that their su原创 2013-08-12 08:49:53 · 2054 阅读 · 0 评论 -
hdu4574Bombs(枚举+dfs)
题目请戳这里题目大意:给一个区间[A,B],表示有B - A + 1种火药,火药i的威力值为i,现在要用这些火药做炸弹,每次按原料的字典序做炸弹。每个炸弹的威力值是每种原料威力值的乘积。现在给一个区间[L,R]表示炸弹的威力值范围,求第K个炸弹的配方。题目分析:因为炸弹的威力值是原料威力值的乘积,R不超过10^9,A至少为2,所以极端情况下炸弹至少要30种原料,所以直接搜就可以了。首先原创 2013-08-15 12:06:16 · 1264 阅读 · 0 评论 -
hdu3665Seaside(水搜索)
题目请戳这里题目大意:给n个点,每个点与其他点有一些有向边,边权为边长。每个点有一个属性,1表示靠海,otherwise 0。现在从0出发,要到靠近海边的点,求最短距离。题目分析:最短路。可是10个点的有向图也懒得写最短路了。直接爆搜吧。比赛的时候准备直接dfs的。男神不知道找了个什么理由非要我写bfs+优先队列优化。。。。。。。事实证明,这题太水。。。详情请见代码:dfs原创 2013-10-04 21:39:28 · 907 阅读 · 0 评论 -
poj3187Backward Digit Sums(暴力dfs)
题目请戳这里题目大意:给一个n(题目分析:最坏10!复杂度,直接爆搜啦,剪枝都免了,妥妥的详情请见代码:#include #include#include#includeusing namespace std;const int N = 11;int lcm[N][N];bool flag[N],ok;int n,sum;void dfs(int cur,in原创 2013-12-22 10:34:16 · 1283 阅读 · 0 评论 -
poj1071 && zoj1019Illusive Chase(dfs)
题目请戳这里题目大意:给一个100*100的地图,给机器人的动作,求机器人可能的起点个数.每个动作由一个范围和一个字母组成,字母表示机器人走的方向,范围表示走的步长.题目分析:题目还不错,挺新颖的,不过数据水大了.dfs模拟出来就秒过了....首先处理出机器人活动范围,假设起始点为(0,0),通过一系列动作后活动的上下左右四个方向的最远界限搞清楚,然后在原地图上开始dfs模拟,找到一个原创 2013-12-21 23:03:49 · 1280 阅读 · 0 评论 -
poj3134Power Calculus(IDA*)
题目请戳这里题目大意:现在只有一个x,求最少经过多少步,可以得到x^n,每一步可以对已存在的x^k做乘法或除法运算.题目分析:n范围不大,不超过1000.所以可以断定任何一组数据20步之内一定出解!但是此题数字的组合方案很多,所以整颗搜索树会很宽,再加上要判重,bfs的话空间消耗非常大.故采用dfs解决.又由于要求最优解,所以迭代加深.代码还是比较好写的,但是会发现写出来后样例都跑不出来.原创 2013-12-21 14:38:02 · 1250 阅读 · 0 评论 -
hdu2337Escape from Enemy Territory(预处理+二分+bfs)
题目请戳这里题目大意:一个二维平面上有n个敌人据点,给一个起点和一个终点,求这个起点到终点的所有路径中距离敌人据点最近距离最大的前提下总长度最短.求这条路径距离敌人据点最近距离和这条路径的最小长度.题目分析:数据范围:n不大于10000,二维平面不大于1000*1000.所有点不重复,且均在平面上.首先直观的感受是二分距离再bfs.不过数据范围有点大,特别是在判断某个点合法的时候要迅速原创 2013-12-21 19:25:26 · 1281 阅读 · 0 评论 -
poj3669Meteor Shower(bfs)
题目请戳这里题目大意:在二维平面上,有个人一开始在原点,现在有一场流星雨,已知有n个,第i个流星第ti秒落在(xi,yi)位置,并且(xi,yi)周围4个位置也会遭殃.人每秒走单位长度,并且只能向四个方向走,并且走的位置要在流行毁灭这一点之前.求这个人最快脱险时间.无法脱险输出-1.题目分析:简单搜索,bfs妥妥的.首先用flag数组记录下所有位置最先遭殃的时间.然后从源点开始bfs.直到原创 2013-12-20 18:35:24 · 1106 阅读 · 0 评论 -
poj2032Square Carpets(IDA* + dancing links)
题目请戳这里题目大意:给一个H行W列的01矩阵,求最少用多少个正方形框住所有的1.题目分析:又是一个红果果的重复覆盖模型.DLX搞之!枚举矩阵所有的子正方形,全1的话建图.判断全1的时候,用了一个递推,dp[i][j][w][h]表示左上角(i,j)的位置开始长h宽w的矩形中1的个数,这样后面可以迅速判断某个正方形是否全1.不过此题直接搜一直TLE,然后改成迭代加深就比较愉快啦原创 2013-12-18 22:06:34 · 1687 阅读 · 0 评论 -
poj1084Square Destroyer(LDX解重复覆盖)
题目请戳这里题目大意:给一个n*n的用单位长度的木棍拼起来的网格图,给每个木棍按图示编号,编号范围1~2*n*(n+1).现在已知图中已经去掉了k个木棍,求还要至少去掉几根木棍能使网格图中不存在正方形.即破坏图中所有的正方形.n不超过5.题目分析:n太小了啦,直接爆搜!dancing links优化之.将之转化成一个重复覆盖的模型.n*n的完全网格图中存在n*(n+1)*(2*n+1)原创 2013-12-18 21:53:33 · 1709 阅读 · 3 评论 -
2013 Asia Hangzhou Regional Contest--hdu4770Lights Against Dudely(DLX)
题目请戳这里题目大意:给一个n*m的格子,每个格子可以是'#'或者是'.'。'.'的数量不超过15个。现在要在'.'的位置放一种灯,假设放在(x,y)的位置。那么这盏灯只能点亮(x,y),(x-1,y),(x,y + 1),这3个位置。现在有一盏灯比较特殊,可以绕(x,y)旋转0度,90度,180度或者270度。现在给这样n*m的格局,求最少放置多少灯能覆盖所有的'.'。每个'.'的位置只能放原创 2013-11-10 16:59:46 · 2028 阅读 · 0 评论 -
hdu3220Alice’s Cube(IDA*)
题目请戳这里题目大意:给一个超级立方体(具体看题目中的图),16个点,每个点有4个相邻点,图中有标识。现在每个点安一个灯泡。一共16个灯泡,有8盏亮8盏灭,现在可以交换任意相邻的2盏状态不同的灯的状态。求最少多少步能使编号1-8的8个灯泡亮,其他的灭。题目分析:题目要求3步以内就够了。16个点,每个点有4个相邻点,16^4,不过case有13000+个。可以考虑IDA*。将16个灯泡压原创 2013-10-17 14:12:46 · 984 阅读 · 0 评论 -
2012 Asia Hangzhou Regional Contest--hdu4462Scaring the Birds(IDA)
题目请戳这里题目大意:有一个n*n的格子,有k个空地,其他地方都种的有庄稼。现在要在k个空地中放稻草人保护庄稼,每个稻草人罩附近距离他曼哈顿距离不超过r的点,求最少需要多少个稻草人能罩住所有的庄稼。题目分析:k太小了,n太小了,IDA爆搜之。不过跑的好慢啊,hdu rank倒数第一。。。详情请见代码:#include #include#include#includ原创 2013-10-09 22:07:54 · 1184 阅读 · 0 评论 -
poj2049Finding Nemo(优先队列+bfs)
->题目请戳这里题目大意:二维坐标平面内给m个墙,n个门,每个墙4个参数:x,y,d,t。(x,y)为墙最左/下点坐标,d表示墙的姿势,d = 1表示墙是竖着的,即平行于y轴,d=0表示墙水平的,墙的厚度不计。每个门3个参数:x,y,d,意义与墙相同,门的长度默认1。墙的范围1-199(此处乃大坑,说了都是泪啊啊。。。)。现在给你一个坐标(f1,f2),求从(0,0)点到给定点至少要过几个门。原创 2013-07-03 18:37:05 · 930 阅读 · 0 评论 -
hdu1043Eight(dbfs)
EightTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9152 Accepted Submission(s): 2466Special JudgeProblem DescriptionThe 15原创 2013-07-19 11:27:31 · 823 阅读 · 0 评论 -
poj3900The Robbery(贪心+dfs)
The RobberyTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 1523 Accepted: 140DescriptionIn the downtown of Bucharest there is a very big bank with a v原创 2013-07-18 23:12:35 · 1319 阅读 · 0 评论 -
poj1184聪明的打字员(操作分离+bfs)
->题目请戳这里题目大意:给2个数字串,给6种操作,要求最少的步数将第一串变成第二串。6种操作分别是:1:swap0:光标位置不变,将光标位置数字与第一个数字交换;2:swap1:光标位置不变,将光标位置数字与第六个数字交换;3:left:如果光标不在1位置,光标左移一位;4:right:如果光标不在6位置,光标右移一位;5:up:光标位置不变,如果光标位置数字小于9,光标原创 2013-07-06 23:39:40 · 1358 阅读 · 0 评论 -
poj1190生日蛋糕(dfs+剪枝)
->题目请戳这里题目大意:一个m层的蛋糕,每层蛋糕均为圆柱体,总体积为n*PI,从下往上的层数满足每一层的半径和高度逐层严格递减。蛋糕最小表面积(不算底面)。(其中m、n以及每层的半径和高度均为整数,设最小表面积为s*PI,输出s)。如果不存在解,输出0。题目分析:因为所有数据都是整数,层数不超过20层,每层的半径和高度有是单调递减的,因此可以用dfs遍历所有解,求最小的。用dfs逐层枚举原创 2013-05-28 22:53:49 · 953 阅读 · 0 评论 -
A Knight's Journey(简单dfs)
->题目请戳这里题目大意:给一个p*q的棋盘,马从(1,1)出发,求能否遍历棋盘中所有点,若能,按字典序输出路径。不能输出impossible。题目分析:是道水回溯。但是被字典序给搞郁闷了。p代表行,q代表列,行用数字标识,列用字母标识。按字典序输出的话搜索方向很重要,方向不对搜出的路径就不是字典序了。所以方向在列上面要从-2,-1,1,2。详情请见代码:#include #incl原创 2013-05-27 18:11:10 · 794 阅读 · 0 评论 -
poj3009Curling 2.0(简单dfs)
->题目请戳这里题目大意:在一个h*w的场地内玩冰壶游戏,0代表空地,1代表障碍,2代表冰壶起始位置,3代表目标位置。现在要把冰壶挪到目标位置,冰壶只能往上下左右4个方向走,冰壶隔壁如果是障碍物,就不能往该方向走。冰壶走了就不会停下来,除非碰到障碍物,碰到障碍物后冰壶停止,障碍物消失(先停止再消失),冰壶当然不能出界。求冰壶能否在10步内(包括10步)到达目的地,如果能,输出最小步数,不能输出原创 2013-05-27 20:36:33 · 709 阅读 · 0 评论 -
poj1564Sum It Up(dfs+判重)
->题目请戳这里题目大意:给定一个数字串,求一个和为t的子串。题意跟这道hdu2610Sequence one基本一样,不同的是,这题要把子序列求和。题目分析:还是dfs做,判重是一样的,只要加个求和就可以了。需要注意的一点是,当输入序列之和小于t的时候直接输出NONE,但是和大于t并不一定有解,所以还要标记一下,一开始粗心,贡献了几次WA。。。详情请见代码:#include #in原创 2013-05-26 22:37:29 · 881 阅读 · 0 评论 -
hdu1044Collect More Jewels(bfs+dfs)
->题目请戳这里题目大意:迷宫问题。在一个h * w的地图上,@代表起始位置,"."代表空地,"题目分析:既然明显是迷宫问题,肯定要搜索。但这题不是简单的要求逃出迷宫就行了,还要求尽可能的带走价值最大的宝物,而宝物的相对位置未知,所以盲目的搜索会产生大量的重复搜索量,所以先bfs求出各宝物以及起点、终点的相对位置,宝物不超过10个,然后再进行dfs遍历所有可能的情况,取最优解即可,这样可以原创 2013-05-07 13:53:02 · 845 阅读 · 2 评论 -
hdu2531Catch him(bfs)
->题目请戳这里题目大意:中文题,很简单,自己看。题目分析:本题也是迷宫搜索类的,不过和一般的迷宫问题不一样的是本题的搜索者有着庞大的身躯,所以一步要占几个格子。不过这对我们的搜索策略并无多大影响,我们只需在移动的时候将搜索者身体所占的地方同时向一个方向移动就可以了。本题要求最少步数,故用bfs。搜索者的身体不超过20格,用结构体保存搜索者的身体信息,从起点开始搜。搜索前先想好判重问题,由原创 2013-05-05 11:37:16 · 871 阅读 · 0 评论 -
hdu2616Kill the monster(dfs)
->题目戳这里题目大意:有一个怪兽,血量为m,有一个英雄,有n个技能(一次性的),每个技能有2个参数:a和M,a表示此技能能KO怪兽a滴血,M表示当怪兽血量不大于M时,此技能伤害加倍,当m题目分析:因为每个技能有伤害加倍的可能,而且技能的释放次序不定,技能的释放次序对怪兽有很大的影响(某些时刻伤害加倍啊啊),又注意到技能个数n是很少的,多余考虑用dfs遍历所有情况,取最优解。所以此题就比较原创 2013-05-05 10:01:10 · 931 阅读 · 0 评论 -
hdu2611Sequence two(dfs)
->题目单击这题目大意:跟2610基本一样,就不多说了,唯一的区别是输出部分,2610输出要求按子串中数字出现的位置靠前的先输出,本题则要求按子串的逻辑顺序输出,即先输出短的,长度相同的子串按第一个不相同的数的大小升序输出。2610按出现的位置输出,直接在原串上搜索就可以了,先搜到的一定是位置靠前的。但本题要求从小到大输出,所以很容易想到要对原数组排序,在排好序的数组里面搜,结果就一定满足输出原创 2013-05-05 09:52:45 · 910 阅读 · 0 评论 -
hdu2610Sequence one(dfs + 剪枝)
题目单击此处题目大意:给一个长度为n的数字串,求该串前p个不递减字串,如果不足p个,则输出所有的不递减子串。题目分析:因为要求输出所有不递减的子串,所以考虑用dfs遍历所有的子串,将符合要求的输出。这题的难点之一是判重。因为数字串中可能出现重复的数字,因此在输出之前要判断此子串之前是否已经存在了。将所有的子串都先存起来是不现实的,因此要在输出子串前先判重。判重要注意2点:如果当前数字是子串原创 2013-05-04 19:06:45 · 1012 阅读 · 0 评论 -
poj1482 & hdu1818 It's not a Bug, It's a Feature!(bfs+状态压缩)
It's not a Bug, It's a Feature!Time Limit: 5000MS Memory Limit: 30000KTotal Submissions: 1205 Accepted: 456DescriptionIt is a curious fact that consumers buying原创 2013-07-07 19:20:41 · 1253 阅读 · 0 评论 -
poj1069 & hdu1362The Bermuda Triangle(建坐标系+剪枝+dfs)
The Bermuda TriangleTime Limit: 2000MS Memory Limit: 32768KTotal Submissions: 1098 Accepted: 510DescriptionPeople in the hidden region of the Bermuda Triangle mak原创 2013-07-10 08:27:52 · 2756 阅读 · 1 评论 -
poj3131Cubic Eight-Puzzle(立体8数码,双向bfs+6进制压缩)
Cubic Eight-PuzzleTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 1301 Accepted: 434DescriptionLet’s play a puzzle using eight cubes placed on a 3 × 3原创 2013-07-11 11:56:57 · 1760 阅读 · 4 评论