搜索-dfs
文章平均质量分 74
iHge2k
专注数据结构和算法
展开
-
Codeforces VK Cup 2012 Round 3 A. Variable, or There and Back Again(dfs)
题目链接:http://codeforces.com/problemset/problem/164/A思路:zh原创 2014-06-06 21:12:28 · 491 阅读 · 0 评论 -
hdu 1518 又一道搜索经典
刚刚做过hdu 1455那道搜索题,在来做这道,那就像切菜一样。。。,orz,让我这种若菜也体验了一把切题的乐趣。。。。好吧,还是说一下大意吧。。。这次是为正方形了。。。就是所有的木棒从头到尾相连,判断能否组成一个正方形。。。搜索过程没有像1455那题有那么多的剪枝。。。orz,我是直接暴力的。。。还是上代码吧。。。 1 #include 2 #include 3 u原创 2014-05-26 17:51:03 · 356 阅读 · 0 评论 -
loj 1337
题目链接:http://lightoj.com/volume_showproblem.php?problem=1337思路:对于搜过的区域进行标记,如果要求的点落在已经搜过的区域,那么直接取出来即可,否则,就dfs一下。 1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #原创 2014-05-26 18:09:37 · 487 阅读 · 0 评论 -
hdu 2437(dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2437思路:只需用一个二维数组记录到达某点时路径长度mod k的最短路径长度,如果余数相同,就更新最小值。dfs暴搜即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace原创 2014-05-26 18:05:54 · 405 阅读 · 0 评论 -
hdu 2821(dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2821思路:一开始的时候没注意到,必须从map[i][j]==0的位置开始,然后就是dfs了,回溯的时候稍微注意一下就可以了。 1 #include 2 #include 3 #include 4 #include 5 #includestring> 6 using原创 2014-05-26 18:05:52 · 334 阅读 · 0 评论 -
poj 1270(dfs+拓扑排序)
题目链接:http://poj.org/problem?id=1270思路:就是一简单的dfs+拓扑排序,然后就是按字典序输出所有的情况。http://paste.ubuntu.com/5987294/原创 2014-05-26 18:04:00 · 438 阅读 · 0 评论 -
hdu 3560(dfs判环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560思路:dfs判环,这里成环的条件是环中的每个点的出度和入度都为1,因此dfs的时候只须判断的相连的每个点的size()==2即可。ps:为防暴栈手动开栈:#pragma comment(linker,"/STACk:10240000,10240000") 1 #include原创 2014-05-26 18:00:00 · 489 阅读 · 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 · 343 阅读 · 0 评论 -
hdu 1342+hdu 2660+hdu 2266+hdu 1704+hdu 1627+hdu 1539
几道搜索水题,搜索要点就是不断剪枝,必要时还要不断恢复路径。慢慢体会递归的强大!!!题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1342View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 55 6原创 2014-05-26 17:58:25 · 401 阅读 · 0 评论 -
hdu 1307
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1307先说一下题意,就是给你n维起始点和终点的坐标,然后后面给出一系列的点,每一行表示这两个点之间有通路,最后让你判断一下能否从起点出发走到终点。由于最多不超过10维,那么我们把每个点的坐标转化为一个整数,然后建邻接表,这样dfs就可以了(值得注意的是我们用set来判重,当然你也可以用数组什么的原创 2014-05-26 17:58:50 · 394 阅读 · 0 评论 -
Codeforces Round #161 (Div. 2) D. Cycle in Graph(无向图中找指定长度的简单环)
题目链接:http://codeforces.com/problemset/problem/263/D原创 2014-05-29 10:42:55 · 756 阅读 · 0 评论 -
Codeforces Beta Round #95 (Div. 2) D.Subway
题目链接:http://codeforces.com/problemset/problem/131/D原创 2014-05-28 17:18:23 · 651 阅读 · 0 评论 -
hdu 1572(dfs+最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1572思路:dfs暴搜即可。View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 33 6 #define inf 1<<30 7 int map[MAX原创 2014-05-26 17:57:07 · 430 阅读 · 0 评论 -
hdu 4324(dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4324思路:dfs搜索即可,如果当前点u的下一个点v已经访问过了,那么就判断dist[u]==dist[[v]+2,成立返回true,否则更新dist[v]=dist[u]+1,继续深搜。 1 #include 2 #include 3 #include 4 #include原创 2014-05-26 18:00:37 · 366 阅读 · 0 评论 -
loj 1412(树上最长直径的应用)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1412思路:好久没写题解了,有点手生,这题从昨天晚上wa到现在终于是过了。。。思想其实很简单,就是预处理出每一块的最长直径,然后每次询问的时候直接查询就可以了。 1 #include 2 #include 3 #include 4 #include 5 #原创 2014-05-26 18:09:18 · 478 阅读 · 0 评论 -
Codeforces Round #14 D. Two Paths(求树上两条不相交的路径的乘积最大值)
题目链接:http://codeforces.com/problemset/problem/14/原创 2014-06-07 20:49:36 · 1303 阅读 · 0 评论 -
loj 1426(dfs + bfs)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1426思路:首先我们预处理出每一个"*"在某一方向上最终能到达的位置,这里我们可以用一个四维数组来记录next[i][j][k][2],然后首先判断"impossible"这种情况,我们可以对每个"*"进行dfs,看是否能够到达边界,如果存在某个“*”不能到达边界,那么直接就是"im原创 2014-05-26 18:09:23 · 352 阅读 · 0 评论 -
hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不在同一个图中的,于是我们可以用dfs染色的方法来判断是否存矛盾。 1 #include 2 #include 3 #include 4 #include 5 #inclu原创 2014-05-26 18:07:29 · 407 阅读 · 0 评论 -
hdu 2196(求树上每个节点到树上其他节点的最远距离)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196思路:首先任意一次dfs求出树上最长直径的一个端点End,然后以该端点为起点再次dfs求出另一个端点,然后再次以求出的另一个端点为起点dfs,每次做dfs的时候都更新dist[](dist[u]表示u到树上任意节点的最远距离),可以证明树上任意某个节点到树上任意节点的最远距离的端点一定会是树上原创 2014-05-26 18:06:22 · 1250 阅读 · 0 评论 -
poj 2531(dfs)
题目链接:http://poj.org/problem?id=2531思路:由于N才20,可以dfs爆搞,枚举所有的情况,复杂度为2^(n)。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int map[22][22]; 8 int belong[22];原创 2014-05-26 18:05:46 · 370 阅读 · 0 评论 -
poj 1129(dfs+图的四色定理)
题目链接:http://poj.org/problem?id=1129思路:根据图的四色定理,最多四种颜色就能满足题意,使得相邻的两部分颜色不同。而最多又只有26个点,因此直接dfs即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 bool map[33][原创 2014-05-26 18:05:44 · 500 阅读 · 0 评论 -
hdu 2610+hdu 2611(两道很好的搜索题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2610http://acm.hdu.edu.cn/showproblem.php?pid=2611、很好的两道搜索题,都用到了判重。。。orz....不怎么会,看了大牛的解题报告才理解。。。跪神牛大牛的hdu 2610思路:题意很简单就是在给定的序列中找到固定个数的递增的子序列,如果子序原创 2014-05-26 17:58:45 · 696 阅读 · 1 评论 -
hdu 2553(N皇后)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553哎,不说了,打表过的,直接搜的话,TLE..View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 //#define MAXN 22 6 //int num[MAXN]; 7原创 2014-05-26 17:57:30 · 384 阅读 · 0 评论 -
loj 1009(dfs)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25835思路:对每一个连通块将其染色,然后取颜色相同的最多的点,最后全部加起来即可。PS:一开始没考虑到有可能有些点不出现,WA了好多次,然后改成将出现的点标记即可。 1 #include 2 #include 3 #include 4原创 2014-05-26 18:07:48 · 420 阅读 · 0 评论 -
hdu 1455 搜索经典
讲的大致是几根原本长度相同的木棒,然后被某人当出气筒剪啊剪啊,剪成好几段,然后,好吧,这时间一长记性就差了,忘了原来这堆木棒的长度。。。orz,我这若菜,也只能帮您推算出原来这堆木棒的可能的最短长度了。。。搜索中的经典之经典,必须掌握啊。。。。 1 #include 2 #include 3 #include 4 using namespace std; 5原创 2014-05-26 17:51:00 · 432 阅读 · 0 评论 -
loj 1257 (求树上每一个点到树上另一个点的最长距离)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1257思路:首先需要用到一个知识点就是树上任一点到树上最长直径的某一个端点的距离最远,因此我们可以用dp[u]表示从u点出发到的最远距离,然后从任意一点出发,一遍dfs求出树上最长直径的某一个端点,然后从这个端点出发,再次dfs求出另一个端点,最后在从求出的端点出发进行dfs更新.每原创 2014-05-26 18:09:35 · 492 阅读 · 0 评论 -
hdu 4770(枚举 + dfs爆搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4770原创 2014-10-05 10:28:08 · 773 阅读 · 0 评论