随笔分类 -  搜索—BFS && DFS

摘要:题目链接题意:给一个由“.”组成的联通区域,求再添加k个‘#'以后还是联通区域的方案。分析:做题的时候犯二了,用DFS,一直搜到边缘,然后从边缘依次往回 回溯,回溯的过程中填充’#‘一直填充k个。因为在搜索的过程中,一直都是vis[][]标记的,所以时间复杂度最多只是搜了所有的边,即500*500*... 阅读全文
posted @ 2014-09-23 11:02 水门 阅读(265) 评论(0) 推荐(0)
摘要:题目链接题意:在有费用k限制的条件下,求从1到n的最短距离,如果最短距离相同求费用最小的,边为有向边,其中可能有多个相同的源点和目标点,但是距离和费用不同。分析:用bfs和邻接表来把每一个边搜一下,因为用了优先队列,所以先到n的一定是最小的 。 1 #include 2 #include 3 #... 阅读全文
posted @ 2014-08-01 21:42 水门 阅读(235) 评论(0) 推荐(0)
摘要:输入两种符号@*, 求@上下左右连在一起的块数。看作栈,每找到一个就处理那一个,找不到的时候返回上一层。直到第一层都结束了。1、直接看程序和样例吧 和 输出的截图吧。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inc... 阅读全文
posted @ 2014-07-29 09:52 水门
摘要:题目链接题意:有N个城市被M条道路连接起来了,每两个城市之间可能存在超过一条路,但是城市之间是单向连接的。每条路是要花费的。每条路的花费可以选择两种方式:1:假如a城市到达b城市,如果之前经过了c城市,那么这条路上的花费为P也可以为R。2:如果没有经过c,则这条路上的花费为R。问从城市1到城市n最小... 阅读全文
posted @ 2014-07-25 20:07 水门 阅读(232) 评论(0) 推荐(0)
摘要:题目链接题意:给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因。分析:先计算出add数组,再dfs枚举。空间复杂度O(n*n), 最坏时间复杂度 O(n^n),但是剪枝以后很快,因为好多搜不到后面,搜不到第n层。 1 #include 2 #incl... 阅读全文
posted @ 2014-07-23 20:57 水门 阅读(485) 评论(0) 推荐(0)
摘要:这个题容易出错想了挺长时间,然后代码不长,1Y..做完题,看了一下别人的博客,也可以优先用 闪烁法术, 在闪烁法术不不如跑步的阶段(即魔法恢复的时候)用跑步。洞穴逃生描述:精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞。在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷... 阅读全文
posted @ 2014-05-07 11:07 水门 阅读(487) 评论(0) 推荐(0)
摘要:题目之前比赛的一个题, 当时是崔老师做的,今天我自己做了一下。。。。还要注意用bfs的时候 有时候并不是最先到达的就是答案,比如HDU 3442这道题是要求最小的消耗血量伤害,但是并不是最先到达目标点的路径就是最小的伤害,因为每一个点的伤害是 不一样的, 这种情况要用优先队列优化, 对伤害优化。题意... 阅读全文
posted @ 2014-05-01 16:37 水门 阅读(302) 评论(0) 推荐(0)
摘要:我的dfs真的好虚啊……,又是看的别人的博客做的 题目==题目:http://poj.org/problem?id=1416题意:给你两个数n,m;n表示最大数,m则是需要切割的数。切割m,使得切割之后的数的和小于等于n。求出最大的切割方法;例: 50 1234612346可以切割为 1 2 34 ... 阅读全文
posted @ 2013-08-31 21:30 水门 阅读(212) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2531题意:一个矩阵,分成两个集合,求最大的 阻碍量改的 一位大神的代码,比较简洁 1 #include 2 #include 3 int n,max; 4 int g[30][30]; 5 int v[30]; 6 void dfs(int x,int sum) 7 { 8 int i,t=sum; 9 v[x]=1;10 for(i=1; imax)17 max=t;18 for(i=x+1; isum)20 {21 dfs(i,t);22 ... 阅读全文
posted @ 2013-08-28 21:46 水门 阅读(186) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1129题意:求最小m,使平面图能染成m色,相邻两块不同色由四色定理可知顶点最多需要4种颜色即可。我们于是从1开始试到3即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 int n,G[30][30],vis[30][5],ans;15 void pri(... 阅读全文
posted @ 2013-08-28 19:38 水门 阅读(199) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3414题意:给出了两个瓶子的容量A,B, 以及一个目标水量C,对A、B可以有如下操作:FILL(i) fill the pot i (1 ≤ i ≤ 2) from the tap;DROP(i) empty the pot i to the drain;POUR(i,j) pour from pot i to pot j; after this operation either the pot j is full (and there may be some water left in the pot i), or the pot 阅读全文
posted @ 2013-08-28 18:22 水门 阅读(220) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3009参考博客:http://www.cnblogs.com/LK1994/ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 int w,h,G[30][30];15 int d[4][2]={{1,0},{0,-1},{-1,0},{0,1}};16 int minstep;17 18. 阅读全文
posted @ 2013-08-27 22:02 水门 阅读(174) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2488题意:给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 struct node15 {16 int x,y;17 }q[30]; //记录路径18 int p,c;19 int vi... 阅读全文
posted @ 2013-08-27 16:42 水门 阅读(178) 评论(0) 推荐(0)
摘要:dfs 用的还是不行啊,做题还是得看别人的博客!!!题目:http://poj.org/problem?id=2676题意:把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。0是待填位置,其他均为已填入的数字。要求填完九宫格并输出(如果有多种结果,则只需输出其中一种)如果给定的九宫格无法按要求填出来,则输出原来所输入的未填的九宫格参考博客:http://www.cnblogs.com/tanhehe/archive/2013/08/07/3243073.htmlhttp://blog 阅读全文
posted @ 2013-08-27 15:30 水门 阅读(199) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1426题意:输入一个数,输出这个数的整数 倍,且只有0和1组成程序里写错了一个数,结果一直MLE.…… 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 long long a;15 void bfs()16 {17 queueq;18 int i,j;19 lon... 阅读全文
posted @ 2013-08-26 20:57 水门 阅读(374) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3126题意:给定两个四位数,求从前一个数变到后一个数最少需要几步,改变的原则是每次只能改变某一位上的一个数,而且每次改变得到的必须是一个素数; 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 int p[10010],vis[10010];15 int a,b,t;16 struct n. 阅读全文
posted @ 2013-08-26 20:03 水门 阅读(156) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2251简单三维 bfs不解释, 1A, 上代码 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 int a,b,c;15 int vis[50][50][50],G[50][50][50];16 int dx[6]={0,0,0,0,-1,1};17 int dy[6]={0,0,1,-. 阅读全文
posted @ 2013-08-26 17:30 水门 阅读(193) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1321参考博客:http://blog.csdn.net/lyy289065406/article/details/6647674 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 14 int n,k,cnt;15 int G[10][10],vis[10];16 17 void dfs(in. 阅读全文
posted @ 2013-08-26 16:28 水门 阅读(163) 评论(0) 推荐(0)
摘要:有几个错误,调试了几个小时,样例过后 1Y.题目:http://poj.org/problem?id=3026题意:就是让求A们和S的最小生成树先用bfs找每两点的距离,再建树。没剪枝 63MS。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 11 char G[60][60]; 12 int dx[5]={0,0,1,-1}; 13 int dy[5]={1,-1,... 阅读全文
posted @ 2013-08-12 17:07 水门 阅读(173) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2049题意:有一个迷宫,在迷宫中有墙与门 有m道墙,每一道墙表示为(x,y,d,t)x,y表示墙的起始坐标d为0即向右t个单位,都是墙d为1即向上t个单位,都是墙有n道门,每一道门表示为(x,y,d)x,y表示门的起始坐标d为0即向右一个单位表示门d为1即向上一个单位表示门再给出你起点的位置(f1,f2),并保证这个点的位置不会再墙或者门中,为起点到(0,0)最少要穿过多少条门代码是根据网上大神的稍微改了一下,就交了 1 #include 2 #include 3 #include 4 #include 5 #includ... 阅读全文
posted @ 2013-08-07 17:30 水门 阅读(203) 评论(0) 推荐(0)