dfs
jiangjiashi
这个作者很懒,什么都没留下…
展开
-
(多维空间探索)N-Credible Mazes(H1307)
这个题其实不难,用的是dfs,杭电的题就是感觉比较容易过,做CDOJ的题就是各种细节。用一个数组存储走过的地方,思想比较简单。。还是自己考虑问题不太周全。#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2012-04-28 12:27:48 · 661 阅读 · 0 评论 -
(搜索or推理)无法挽回(CD1786)
这个我用深搜做的,然后就严重超时了。看了题解,,用的是推理后的,直接的判断。直接推理所得的代码:#include#include#includeusing namespace std;int main(){ freopen("in.txt","r",stdin); int i,j,k; int t; int n,m; int x,原创 2012-12-11 23:48:35 · 373 阅读 · 0 评论 -
Cycle in Graph (coder)
找到一个大于K的没有重复的圈。思路:用的是深搜,一开始我就只是单纯的试着从1开始。但是wrong了,这样很快想到了反例, 就是把每一个点作为起始点开始搜就可以了,直到搜到满足要求的序列。用pre来记录其排序。#include#include#include#include#include#include#includeusing namespa原创 2013-01-17 01:28:39 · 709 阅读 · 0 评论 -
children of the candy corn (P3083
方法:1,最短路就用简单的广搜就可以了。 2,左优先的步数是由先左,往前,往右,向后的顺序走出来的。 这里不用担心会出现死循环的情况,在这里不会出现的。#include#include#include#include#include#include#include#includeusing n原创 2013-02-21 10:17:41 · 521 阅读 · 0 评论 -
Curling2.0 (P3009)
这个题写出来后,,测试结果是对的,可是一直WA。后来经过仔细检查,发现少了一点点#include#include#include#include#include#include#include#includeusing namespace std;int n,m;int map[22][22];int ans;int a[4][2]={原创 2013-02-21 15:13:34 · 1391 阅读 · 0 评论 -
(随机算法 、 步数搜索) Network Saboteur (P2531)
如果直接进行搜索会比较耗时,这样就可以规定搜索的步数,当达到这样的步数后就进行判断。另一种方法就是随机算法,就是用随机数来使各种情况都考虑到,然后找到最大的结果。 #include#include#include#include#include#include#include#includeusing namespac原创 2013-02-22 15:15:49 · 680 阅读 · 0 评论 -
Shredding Company (P1416)
题意:就是把一个数字串随意地切割成任意的段 其数字加起来的和不大于给定的一个数。 求出这样的不大于给定数的一个数。做法:因为数字串最长只有6位,所以随便的深搜吧。 因为要输出其分割情况,则用一个bool型记录其搜索时进行的分割情况即可。#include#include原创 2013-02-22 22:11:36 · 461 阅读 · 0 评论 -
剪枝《block》
真的剪枝会提高很多的效率,虽然剪的时候可能计算的步骤比较多。不过这只是倍数的增加。换来的是指数的减少。还有就是要注意边界条件。#include#include#includeusing namespace std;#define inf 1e9int n,m;int ans;void dfs(int r,int h,int step,int v,int s)原创 2013-05-17 12:42:53 · 600 阅读 · 0 评论 -
DFS+BFS
题意:给出起点和终点,两个点都在边上,,且其余边都封好。 给出左优先搜索的距离,,右优先搜索的距离,,最短距离。思路:前一个答案是由左、向、或、后,这四个方向的顺序就一定能找得到终点。 第二个答案类似 最短距离直接广搜就可以(由于自己写的是否已访问过的标记记了,T了两次)#include#include#原创 2013-05-17 14:51:04 · 553 阅读 · 0 评论 -
(麻烦)Flip Game (CD1488)
太麻烦了,刚开始自己还想歪了.后来也是各种细节出错.值得高兴的是做出来了,黑黑最近又做了一遍,发现自己的思路更清析了,不过还是WA了好几盘。因为在flip的时候应该是flip下一个坐标的#include#includeusing namespace std;#define inf 10000char s[15][15];int go[16][16];int原创 2012-05-08 21:14:14 · 1217 阅读 · 0 评论 -
Cow Picnic (P3256)
题意:有N个农场,M条路连通他们(只是单向的) 现在有K头牛在一些农场上, 求所有牛能到达的农场个数。思路:就是对于每头牛单独地DFS,最后逐个检查每个农场牛到的头数。#include #includeusing namespace std;int k,n,m;vector v[1001];int at原创 2013-10-25 11:30:55 · 714 阅读 · 0 评论 -
Anti-prime sequence (P2034)
题意: 给定一串连续的整数从n到 n+m, 让我们给其数排序,满足以下要求:在这m+1个数中的任意的连续的2~d个数 之和不为素数(其中不考虑循环的情况)思路:直接DFS判断即可,感想:感觉好久没有做过题一样的,一开始还对题意把握得不准。好久才做出来,幸好一次过。#include#include#inc原创 2013-10-21 20:53:43 · 567 阅读 · 0 评论 -
sticks
题意:给出最多64根木棍,原创 2014-05-04 20:33:12 · 740 阅读 · 0 评论 -
STAMPS
POJ 1010只用于记录原创 2014-05-06 18:58:13 · 1408 阅读 · 0 评论 -
(简单) 闯迷宫 (CD1775)
注意:把方向搞清楚就可以了。 #include#include#include#include#include#include#include#includeusing namespace std;int map[111][111]; int stx,sty,edx,edy;bool vist[111][111];bool ok;原创 2012-12-11 13:34:30 · 709 阅读 · 0 评论 -
Graph coloring(P1419)
这个题直接暴搜就可以,一开始我还直接就默认着就用树形DP了,结果在序列号输出的时候就纠结了,收获:想不到办法的时候就想一下其它的各种方法。 用压缩了的MP来存储图的连接信息可以提高搜索时间,但没有与vector进行比较过,估计差不多的,可能前者还会优一点点。就是这样,,#include#include#inclu原创 2012-11-23 16:25:58 · 365 阅读 · 0 评论 -
A Knight's Journey(P2488)
一道比较简单的搜索题,自己也是一次过,过得比较爽。哈哈。。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int fang[8][2]={{-2,-1},{-2,1},{-原创 2012-04-11 21:28:17 · 359 阅读 · 0 评论 -
(难)Channel Allocation(P1129)
虽然成功了,这样的题还是好些参照了人家的代码。,这是一个四色原理图。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int n;int map[100][100];in原创 2012-04-11 19:39:20 · 863 阅读 · 0 评论 -
八皇后问题H2553
以前做过,还是费了些时间才做出来,#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;bool vist[10][10];bool lie[50];bool h原创 2012-04-28 10:02:11 · 350 阅读 · 0 评论 -
(剪枝)stick(P1011)
剪枝要用心体会,仔细找枝,poj1011 搜索 2010-08-18 15:02:21| 分类:默认分类 |字号 订阅 经典搜索题,黑书上的剪枝例题。剪枝的空间很大,剪枝前写下朴素的搜索框架(黑字部分),枚举原始木棍的长度及由那些小木棍组合。原始木棍长度一定是小木棍总长度的约数,因此可以减少枚举量。转载 2012-05-10 15:44:54 · 1414 阅读 · 0 评论 -
fire net(zoj1002)
#includeusing namespace std;int n,maxB;char shape[100][100];bool can(int i,int j){ int m,k; for(m=i-1;m>=0;--m) { if(shape[m][j]=='o') return false; if(shape[m][j]=='X') break; } f转载 2012-06-02 21:09:18 · 723 阅读 · 0 评论 -
(难)分数拆分(CDOJ1668)
剪枝很重要,,还要注重最小分数要依次最大,好。#include#include#include #include#include#includeusing namespace std; #define N 100long long a,b;long long pre[1000];int num=0;long long ans[1000];bool f;lo原创 2012-06-06 17:41:04 · 2349 阅读 · 0 评论 -
(dfs+bfs+记录)迷宫问题(P3984)
还行吧,,比较简单#include#include#include #include #includeusing namespace std; #define N 6struct my{ int x; int y;}pre[N][N];bool vist[N][N];int map[N][N];int a[4][2]={{-1,0},{0,-原创 2012-05-21 12:46:09 · 638 阅读 · 0 评论 -
棋盘问题(P1321)
和八皇后问题有一点类似,,是一个简单的搜索问题#include#include#include #include #include#include#includeusing namespace std; int num;int n,m;char map[10][10];bool vist[2][10];struct my{ int x; int y;原创 2012-05-26 16:05:52 · 870 阅读 · 0 评论 -
Tempter of the Bone (H1010)
这是一个简单的深度优先的题,都写了好久才对了,注意剪枝。特别是奇偶数。(从表面看上去这个题的格数这么小的,还是很容易超时的,对于我来说)同样,这个题用bfs的原理是不对的。#include#include#include#include#include#include#include#include#includeusing namesp原创 2012-07-17 16:09:25 · 281 阅读 · 0 评论 -
(简单) Oil Deposits
#include#include#include#include#include#include#include#include#includeusing namespace std;#define N 111int n,m;char map[N][N];bool vist[N][N];int ans;int a[8][2]={{1,0},{1,1},{0,1}原创 2012-07-17 16:34:45 · 268 阅读 · 0 评论 -
Square (P2362)
这个题是P1011 stick 的简单版,以前都是参考着别人的代码才AC的、。今天我就费了很多的时间,一直以为自己是对的,然后看了一下我以前写的,发现自己存在着一个误区:一个边一个边的搜索到。其实要全部一直才可以的。 因为这里的组合不是想像中的那么的简单。注意:在变量比较多的时候还是要把变量写得明确一点,不要为了节约一点时间而浪费更多时间原创 2012-08-09 00:54:16 · 661 阅读 · 0 评论 -
Lake Counting (P2386)
是简单的搜索题,可以深搜,也可以广搜。这里用的是深搜记得要标记状态就行了。#include#include#include#includeusing namespace std;#define N 105int n,m;char map[N][N];bool vist[N][N];int a[8][2]={{1,0},{1,1},{0,1},{-1,1原创 2012-09-22 20:09:04 · 475 阅读 · 0 评论 -
(树形DP_简单)Anniversary party (P2342)
这个是我做出来的第一道树形DP,是把DFS与DP的简单结合。思路:这个题默认就只有一个根结点,就先找到这个根结合,然后从根结点从上往下进行深 度遍历,然后在回塑的时候由最底层往上一步一步地DP就行了。#include#includeusing namespace std;#define N 6666#define inf -1000000原创 2012-11-17 10:19:10 · 311 阅读 · 0 评论 -
Pacsal's Travel (P2704)
题意:有一个以N为边长的一个N*N的格子里,每一个格子里有一个数 代表着到这个格子里的时候可以向下或是向右前进多少步 问从左上角的位置能以这样方式到右下角的路线条数。 思路:就是进行简单的深度搜索,把搜到的结果用数组存下来就行了。 #include#include#include#include#include#in原创 2012-12-05 22:26:40 · 367 阅读 · 0 评论 -
CF 1006E Military Problem (树,dfs)
1006E 题意: 有一棵树,找到从一个结点开始DFS到第K个的节点编号是多少,其中N,Q<=2*10^5,(N-节点数,Q-询问数) 思路1:直接DFS查到每一个节点到以及其子结点的总结点数。然后搜索的时候按节点总数可以加快搜索的速度,但是这样的思路如果是线性的直接就TLE,抱着侥幸的想法结果到第三个测试例子的时候果然就TLE思路2: DFS得到每结点的cnt数,每个c...原创 2018-07-27 01:02:59 · 281 阅读 · 0 评论