搜索
hexianhao
这个作者很懒,什么都没留下…
展开
-
nyoj 82
迷宫寻宝(一)时间限制:1000 ms | 内存限制:65535 KB难度:4描述一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N 输入输入可能会有多组测试数据(不超过10组)。每组测试数据的第一行包含了两个整数M,N(1.表示可以走的路S:表示ACM的出发原创 2016-02-02 07:49:30 · 447 阅读 · 1 评论 -
poj 1935(搜索+回溯)
解题思路: 先我们考虑从源点出发到所有自己想要经过的点然后在回到源点sum,显然每条边都必须经过源点(这个我们可以一次dfs求出),但题目的意思是可以不用回到源点,那么我们可以再求源点到所有要经过的点的最远距离ans,于是答案便是sum-ans.这道题的思路确实是很巧妙,一开始我还是在想如何表示从某一点回来的状态,数据太大用状态压缩肯定不行,结果就没思路了,看了别人的思路确实是抓住了这原创 2016-02-24 16:46:29 · 786 阅读 · 0 评论 -
poj 1948(搜索+剪枝)
解题思路:这道题看到数据量,想到应该搜索+剪枝应该可以过。。可是别人的A了,我的却超时了。。。我用了一个mark[a][b],表示前两条边长度分别为a和b时,是否已经处理过,如果是的话就直接跳出。。。剩下的就是一个比较简单的搜索过程了,代码不难写,但是确实超时不可避免。。#include#include#include#include#includeusing names原创 2016-02-25 14:33:06 · 297 阅读 · 0 评论 -
hdu 3681(bfs+dfs+状态压缩)
解题思路:这道题属于图上来回走的问题,可以把重复走的过程弱化,即只强调从u->v的结果,中间经过的节点都不考虑。这道题里面'G','F','Y'是重要的节点,其余的点我们是可以忽略的,也就是说,假设从u->v,我们只需要知道最短路径是多少就可以了,至于是怎么走的,中间绕过了多少个'D'都不是我们关心的。这样我们就只需要用bfs找到'G','F','Y'两两之间的最短路径,剩下的就是一个典型的TSP原创 2016-03-10 16:46:24 · 392 阅读 · 0 评论 -
hdu 3006(状态压缩)
题意:给一些集合,取一部分集合合并能够得到多少个新集合。解题思路:这道题数字最多只有14,可以用状态压缩去做,每一位代表某个数,0代表不取,1代表取这个数。剩下的就是去模拟状态了。不多讲,输入状态压缩入门题。#include#include#includeusing namespace std;const int maxn = 105;int n,m,Set[m原创 2016-04-18 13:08:40 · 247 阅读 · 0 评论 -
hdu 1254(dfs+bfs+优先队列)
推箱子Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem Description推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱原创 2016-06-15 14:37:34 · 383 阅读 · 0 评论 -
hdu 5676(dfs)
ztr loves lucky numbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Descriptionztr loves lucky numbers. Everybody knows that positive intege原创 2016-07-04 12:29:09 · 309 阅读 · 0 评论 -
hdu 4886(hash + dfs)
TIANKENG’s restaurant(Ⅱ)Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 130107/65536 K (Java/Others)Problem DescriptionAfter improving the marketing strategy, TIANKENG has made a原创 2016-06-19 08:44:54 · 255 阅读 · 0 评论 -
hdu 5424(dfs搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5424官方题解:如果图是联通的,可以发现如果存在哈密顿路径,一定有一条哈密顿路径的一端是度数最小的点,从哪个点开始直接DFS搜索哈密顿路径复杂度是 O(n) 的。要注意先判掉图不连通的情况。 #include#include#include#includeusing n原创 2016-07-18 16:45:19 · 306 阅读 · 0 评论 -
hdu 5433(bfs+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5433解题思路:dp[i][j][k]表示在(x,y)点,毅力为k时的最小体力。由于每个点可能会走多次,所以用bfs往四个方向搜索,不过考虑到最优情况,只有比dp[i][j][k]更小,才把它放进队列里。#include#include#include#include#include原创 2016-07-19 16:48:48 · 267 阅读 · 0 评论 -
hdu 1226(bfs+同余剪枝)
超级密码Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3864 Accepted Submission(s): 1240Problem DescriptionIgnatius花了一个星期的时间终于找到了传原创 2016-08-06 11:18:15 · 290 阅读 · 0 评论 -
poj 1186 方程的解数(线性探测再哈希)
方程的解数Time Limit: 15000MS Memory Limit: 128000KTotal Submissions: 7084 Accepted: 2431Case Time Limit: 5000MSDescription已知一个n元高次方程: 其中:x1, x2,...,xn是未知数,原创 2016-08-08 09:52:58 · 497 阅读 · 0 评论 -
hdu 1560 DNA sequence(迭代加深搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560题意:从n个串中找出一个最短的公共串,,该公共串对于n个字符串不要求连续,即只要保持相对顺序就好。解题思路:根据数据量这题可以用搜索,通过这题学到了迭代加深搜索。我们可以去搜索最后满足条件的串,但这题的关键是如何去找匹配,我们可以定义一个数组len[i],表示搜到当前这个串时,第i原创 2016-08-08 11:10:51 · 411 阅读 · 0 评论 -
poj 2258 The Settlers of Catan(边的搜索)
The Settlers of CatanTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 1193 Accepted: 782DescriptionWithin Settlers of Catan, the 1995 German game of the原创 2016-08-08 15:15:17 · 1380 阅读 · 0 评论 -
poj 2078(搜索+剪枝)
解题思路:可以一行一行地递归求解,要是不符合条件就回溯,注意最后一行不能够移动它,因为可能会与之前重叠。。#include#include#includeusing namespace std;const int maxn = 8;int n,mat[maxn][maxn],ans;int get_max(int dep){ int m = 0, s原创 2016-02-24 15:25:55 · 646 阅读 · 0 评论 -
hdu 1067(bfs+hash判重)
GapTime Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionLet's play a card game called Gap. You have 28 cards labeled with two-digit n原创 2016-03-09 16:20:16 · 333 阅读 · 0 评论 -
hdu 2821
题意:n*m的格子上有一些方块放在某些格子上,一个格子可能有几个方块,用'a'-'z'来表示方块数量。初始的时候可以选择任意空地作为Pusher初始点,Pusher选择一个方向,然后向这个方向前进直到遇到有方块的格子,Pusher把这个格子的方块清除一个,并把它向前推一格(向前不能出界),如果前面一格有方块,那么这些方合起来放在这个格子中。Pusher和有方块的格子之间至少要有一个空地才能推动原创 2016-03-02 17:12:54 · 611 阅读 · 0 评论 -
hdu 4101(bfs+博弈)
题意:题目的意思就是说两个人轮流玩游戏,给你一张地图,这个地图中间有一点-1代表宝藏,Ali and Baba轮流走路,如果某一个人能够直接走到宝藏的话,那么他就赢了。地图上其它的点0代表空地,数字代表当前地点的石子当某一人拿石子的时候,他只能拿走一颗。问你谁最后能拿到宝藏;解题思路:宝藏位于-1位置,如果能够直接找一条通路的话,那么肯定是Ali赢,这一步显然可以用bfs,原创 2016-03-02 21:19:16 · 314 阅读 · 0 评论 -
poj 1190(剪枝)
生日蛋糕Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 16191 Accepted: 5751Description7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+原创 2016-02-15 20:57:55 · 332 阅读 · 0 评论 -
poj 1632
Vase collectionTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 2243 Accepted: 864DescriptionMr Cheng is a collector of old Chinese porcelain, more speci转载 2016-02-16 08:45:07 · 388 阅读 · 0 评论 -
poj 1691
题目大意:墙上有一块区域被分成了n个矩形,每个矩形要涂上各自的颜色。为了保证完美要求这一块区域可以进行涂色的条件是它上方的所有区域都已经涂好颜色,这样就不会有后续的操作影响这块区域的颜色。但是如果两块区域颜色不同就要换涂颜色用的刷子。问最少需要换几次。解题思路:由于这题有一个限制条件,即上方的所有区域都已经涂好颜色,所以肯定是要求一个满足条件的拓扑序列,既然这样就很好办了,把上原创 2016-02-16 10:56:40 · 906 阅读 · 0 评论 -
poj 1753
转载标明出处:http://blog.csdn.net/lyy289065406/article/details/6642595#comments本题难点有两个,一个就是不要以全黑(或全白)作为目标进行搜索,而是要把全黑(或全白)作为“根”,去搜索树叶,看看是否有 输入的棋盘状态。 另一个难点需要一点数学功底,就是要知道 树 的最大高度,这是“状态不存在”的判断标准提示转载 2016-02-16 17:41:52 · 227 阅读 · 0 评论 -
poj 2362(剪枝)
题意:给定一堆不定长度的小棒子,问他们能否构成一个正方形。解题思路:最开始写的时候把题意弄错了,以为只要能够从中取出一部分构成矩形即可。。。。这里注意一下几个剪枝的地方:1)要把所有的棒子都用上且组成正方形,那么sum % 4 = 0;2)如果棒子长度小于4,肯定是不行的3)如果棒子中有长度大于sum/4的,肯定是组成不了正方形的。注意:对棒子长度进行排序时,从大到原创 2016-02-17 10:44:28 · 359 阅读 · 0 评论 -
hdu 4012(bfs+位压缩)
转载标记处:http://blog.csdn.net/kalilili/article/details/43560257思路:每次涂色以后必有一个格子的颜色是最终的颜色,否则这次涂色根本没意义,所以我们把每次涂色后哪些格子成为最终颜色的所有可能都入队,入队的元素是一个struct包含步数和最终颜色已确定的木块集合,这个集合必须用整数表示,所以用到状态压缩,因为最多只有16个格子,所以用原创 2016-03-03 20:06:24 · 390 阅读 · 0 评论 -
poj 3411(DFS多点访问)
题意:有n座城市和m(1解题思路:这道题的n与m都很小,dfs可以搞定,但这里与以往的搜索不同,以前dfs每个节点只能够访问一次,这里有多次访问的可能性。很好的是这道题给的是一个有向图,我们只要知道某节点被访问的次数即可,如果访问次数过多,那么肯定是走到了一个环,立即跳出来。。参考了别人的,节点访问次数最多只有3AC:#include#include#include原创 2016-02-17 17:31:45 · 381 阅读 · 0 评论 -
poj 1054
解题思路:这道题其实比较简单,就是找斜率相同且间距相同的点。首先,就是要找到两点,确定好斜率,然后就判断这两点是否在起始位置。其次,确定好斜率就确定了两个点之间的距离,如果某两点之间的间距不满足的话,那么这个点肯定不是这个方向上的。#include#include#include#includeconst int maxn = 5005;struct node{原创 2016-02-23 14:59:32 · 383 阅读 · 0 评论 -
poj 1324(BFS+状态压缩)
解题思路:这道题一开始的想法就是状态压缩,即考虑如何判重,由于蛇并非是直线的,所以想到了以每一个点的上下左右共四个值来表示相对位置。最开始想如何用四进制来表示它,无语。。。。。还是题目做少了,直接用两位来表示一个点即可(两位的二进制数可以表示0-3)。剩下的关键就是判断蛇头会不会与蛇尾发生碰撞,详细的就看代码吧。。整体的思路还是比较简单,但是代码很复杂,一般这种复杂点的搜索题代码都挺长原创 2016-02-23 20:26:10 · 561 阅读 · 0 评论 -
hdu 4090(搜索+可行性剪枝)
解题思路:这道题一开始我想用bfs,但这道题我感觉难的是每次消除后,怎么往下往左移动。此外还有就是要剪枝,不然是过不了的,可采用可行性剪枝,即当前的得分加上当前状态下可能得到的最大分,如果还不能够达到最优,那么就要剪枝。这道题看似不难,但有很多细节要处理。这里参考了别人的代码,很多都是用dfs+剪枝。。关键还是位置移动的部分没有完全弄明白。。。#include#i原创 2016-03-09 15:08:15 · 729 阅读 · 0 评论 -
poj 2415(BFS)
题意: 有一种游戏,共有三个piece(不妨称为棋子),棋盘是由N个点构成的完全图,边有颜色。每次可以移动一个棋子,移动时必须满足棋子走过的边的颜色和其他两个棋子之间的连边的颜色一致。求把三个棋子移到同一个顶点的最少次数。这道题是一个很简单的BFS,但为何一直TLE。。。。#include#include#include#includeusing names原创 2016-02-24 11:55:35 · 351 阅读 · 1 评论 -
poj 2248 Addition Chains(迭代加深搜索)
Addition ChainsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5067 Accepted: 2742 Special JudgeDescriptionAn addition chain for n is an integer seq原创 2016-08-08 16:44:25 · 495 阅读 · 0 评论