![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
各种搜索
文章平均质量分 75
zxy_snow
这个作者很懒,什么都没留下…
展开
-
hdu 4125 Moles
这几天在做北大出的现场赛题,崩溃。今天做的11年福州的现场赛题,俩字,呵呵。。。好几道都是各种算法糅合啊啊啊啊。。。哎这个题,比较恶心了,DFS不能用系统栈,得自己写,好吧。不算神马。建二叉查找树不能用普通方法,我用的是map,刚才搜题解好多用线段树的,map足以。我将数字所在的结点(结构体,左孩子,右孩子的那个结构体)编号存入map,比如你要插入6,之前已经插入了2,原创 2013-10-02 18:36:32 · 4011 阅读 · 0 评论 -
ural 1056. Computer Net
<br />这题,纠结好久了。题意是,给你一颗树,求到达其他端点最远距离最近的点。<br /> <br />昨晚想出来一种方法,但是实现很有问题。就是删度为1的点,一直删到剩下的点度都为1为止。但是这个实现起来很麻烦啊。。。T T 。。<br /> <br />党姐今天说了他的想法,就是找最长链,然后求得的点要么是一个要么是两个,所以肯定是最长链中间的那一个或者两个。找最长链是,随意从一个点出发,找到离它最远的一个点,然后再由这个点找最长链。<br /> <br />刚实现了下,觉得没啥问题,在第九组cra原创 2011-05-15 15:21:00 · 978 阅读 · 0 评论 -
ural 1210. Kind Spirits
<br />给出图,每一层有好几个点,求从0层到最高层的最短路。<br /> <br />开始没多想,直接拿最短路写的,建图稍显麻烦,不过还好啦。1A了。后来想起来党姐说DP可以做,想了想,这不就类似数字三角形嘛,用DP也过了,DP真短。<br /> <br />最短路SPFA<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include原创 2011-05-15 23:36:00 · 1352 阅读 · 2 评论 -
ural 1080. Map Coloring
<br />图的染色问题,类似二分图的染色问题。其实这题就是问你能不能类似二分图一样把图染成两个颜色,而且相邻顶点颜色不一样。<br /> <br />直接DFS。。。没啥好说的。如果遇到不合适的,输出-1.<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;const int MAX = 110;int n;bool map[MAX][MAX];int原创 2011-05-12 23:47:00 · 1509 阅读 · 0 评论 -
ural 1106. Two Teams
<br />给你朋友关系,要求分成两个队,使得任意一个人在一个队,他在另一个队都有朋友。<br /> <br />直接DFS,不过这么DFS有点莫名其妙哈。。。<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <string.h>#inc原创 2011-05-12 23:45:00 · 1010 阅读 · 0 评论 -
ural 1008. Image Encoding
<br />这题越界了好多次 ,crash。。。神马的。<br /> <br />还是没读懂题啊 !!!我木有看INPUT OUTPUT的描述<br /> <br /> <br />Input<br />One representation of the image will be given to your program in the input.<br />Output<br />Your program has to write other representation of the image t原创 2011-05-10 23:09:00 · 1178 阅读 · 0 评论 -
ural 1033. Labyrinth
<br />和轻工校赛第一题基本一摸一样。。。昨晚和党btw翻题的时候发现的。。。我们表示。。。无语。。。<br /> <br />从左上角和右下角搜下,如果搜超界还有碰到#,sum++即可~最后sum-4去掉两个点的门,最后*9(题目要求的,恩。。)<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>原创 2011-05-10 17:23:00 · 1104 阅读 · 0 评论 -
zoj 1937 || poj 2248 Addition Chains
昨晚看的这个题,今天早上上课的时候,想起来了,就想了下,机组老师太能喷了,基本都在说了,不过确实有的挺有道理的。第二节英语课,我快郁闷死了,老师说,这节课第一节,就不讲了,结果我们愣了两节课。。。就带了英语书和机组书,不想看 = =。。中午把这题给A掉了,嘻嘻。这题是,给你数n,求出1......n 一串数,其中每个数字分解的两个加数都在这个序列中(除了1,两个加数可以相同),要求这个序列最短。上机组的时候,就想了想,在纸上画了画,决定用BFS。首先,BFS是一层一层往下搜的,则最先搜到的一定是最短的,所以原创 2011-02-21 13:24:00 · 1922 阅读 · 0 评论 -
zoj 1457 Prime Ring Problem
好早以前见过,恩,没做。。今天见了,就做试试。很早以前在CSDN的学生大本营见过有人提出这种问题,就是将20个数绕成环,相邻两个数的和是素数。当时有人提出思路就是,相邻两个数肯定是一奇一偶,然后神马的记不起来了。按照这个思路,DFS,第几个位置搜索和它奇偶性相同的数即可。如果n为奇数肯定是不满足的。提交就PE了,还挺嗨皮,木有WA or TLE。。。改了几次还是PE = =。。。注意,输出不要有多余空格,如果n为奇数,输出一个空行就行了 = =。。。#include #include #inclu原创 2011-02-23 12:24:00 · 1183 阅读 · 0 评论 -
zoj 2475 Catenyms
DFS搜索。开始以为是强连通分量,用tarjan套了半天模板不对 = =。。。直接构图后,拿需要编译的编号为起点深搜即可,如果搜到的点标记过了,说明搜到环了,说明这个环不能被编译,以至于指向这个环的点都不能被编译。因为指向的点是变量在那个点里的。一直WA,后来想到数据,1 1 1 1.这个应该输出Yes。。。改一下就好了。#include #include #include #include #include #include #include #include #inclu原创 2011-02-22 18:18:00 · 1133 阅读 · 0 评论 -
zoj 1940 || poj 2251 Dungeon Master
<br /> <br />以前见过这题。。。恩。没仔细看,今天看到了,恩。。。三维的迷宫。。<br /> <br />以前经常做二维的迷宫,第一次做三维的耶。其实没啥区别,地图用3维字符串数组存,广搜的方向为6个方向,分别是上下两个,同层四个。<br /> <br />然后BFS求最小时间即可。<br /> <br />1A~嗨皮~<br /> <br />#include <cstdio>#include <cstdlib>#include <iostream>#include <string原创 2011-02-23 10:20:00 · 1471 阅读 · 0 评论 -
zoj 1909 || poj 2362 Square
啊。。搜索。。。这题比poj1011算是简化版的吧。直接按长度从大到小排序。如果长度之和%4不等于0直接输出no。然后DFS,如果满足题意,尽快退出DFS。如果不满足题意,也尽快退出,比如,如果从第一个数找不到满足题意的,就可以退出了,因为每个数都必须用到的,这一点,我开始没有优化,实现的办法木有想清楚,270+ms。。。就刚才。。想通了点,加了一句话。。。10ms了。。。激动下~就是,如果找的点遇见第一个点被赋值为0了,那说明第一个点回溯了,这是不应该出现的,如果第一个点就回溯,那么肯定从第一个点就找不到原创 2011-02-18 22:23:00 · 2130 阅读 · 5 评论 -
zoj 1430 || poj 1697 The Erythea Campaign
<br />最短路分类里的,zoj只有50个人过,暴汗,不过应该大多数是被冗长的题目给吓住了吧。<br /> <br />给你地图,图中的1代表这里有根据地,你越靠近根据地,越容易被敌人发现,危险等级越高。不能从根据地中间穿过。<br /> <br />给你起点,终点,求最少的危险等级和使之可以到达,如果没有 输出,no solution。<br /> <br />危险等级是这么定义的,你在某个点,这个点离它最近的根据地的距离为d,那么,这个点的危险等级就是,矩阵的长+宽-d。<br /> <br />我第原创 2011-03-28 18:58:00 · 1215 阅读 · 0 评论 -
ural 1208. Legendary Teams Contest
<br />给你几队,每队三个队员,但是可能有重复。一个队员只能属于一个队,问你最多几个队不冲突。<br /> <br />如果每队两个队员,那就是二分图最大匹配啦~~<br /> <br />这样的话,直接搜就好了。直接搜每个队成立的话然后取哪几个队。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <math.h>using names原创 2011-05-17 22:16:00 · 1275 阅读 · 0 评论 -
zoj 1505 || poj 1198 Solitaire(状态压缩+双向BFS)
状态压缩+双向BFS。。。我压了一个下午!!!!!!呜呜。。>双向BFS理解的不好,我弄俩队列同时搜。。我错了。。。其实刚开始就想到了,这么搜万一有一个走6步,一个走2步,挺纠结的是把。后来一直过不去,才知道。。。双BFS可以保存一个BFS的结果,然后第二个搜第一原创 2011-10-04 18:34:29 · 2509 阅读 · 2 评论 -
zoj 2050 || poj 1753 Flip Game(状态压缩 简单BFS)
这题也算是经典题了,好早之前就看到了,一直没啥想法做,知道是状态压缩,可是没细想过。A过上道题,就想找个状态压缩的试试哈,就找到这个题啦。很容易想到,4*4的格子,用一个16位的存下(用int绰绰有余~)就好,这样的话,一个状态就可以用一个数字表示了,标记状态是否用过,用原创 2011-10-03 22:54:09 · 2305 阅读 · 0 评论 -
BUPT 网赛测试赛 II B 起重机
这题当时我直接裸搜了,其实应该想到的 15! 肯定要超时啊。。。不过这题当时LG也做了,他过了,看他代码,用的状态压缩。。后来看状态压缩的论文,了解了下,今天再看他的代码就很明白了= =。。基本上照抄了一遍囧,改了点小地方。。位运算的状态压缩,相当于把所有状态原创 2011-10-03 17:24:23 · 1157 阅读 · 2 评论 -
zoj 2546 || poj 2662 || hdu 1142 A Walk Through the Forest
某同学给的题。。。发现这三个OJ都有。。。啊。。我是不是很无聊。。。他给我叙述的是从1到2有多少条最短路。。结果死活不过。。去官网下了数据,发现跑得不对,和他的答案一样,然后我俩就怀疑理解错题意了,囧。。果不其然。。。重点是这句话 He considers tak原创 2011-09-24 22:28:56 · 1378 阅读 · 1 评论 -
hdu 2266 How Many Equations Can You Find
某小盆友给的题。给你一串数,让你通过增加加号或者减号使得经过运算得到另外一个数,问有多少种方法。我的做法是枚举每个参与运算的数,DFS下就好。注意第一个数前面不能有符号。#include #include char s[15];int sum,len;__in原创 2011-08-23 19:01:46 · 1257 阅读 · 0 评论 -
hdu 3926 Hand in Hand
判断两个图是否是同构的。根据题意,这个图只能由环和链组成。判断环的个数以及每个环组成的人数,还有链的个数以及每个链组成的人数即可。#include #include #include #include #include #include #include #原创 2011-08-09 18:38:56 · 1430 阅读 · 0 评论 -
hdu 3848 CC On The Tree
貌似还是树状DP,貌似我还不会,还是用搜索搜的。如果纯粹用优先队列搜,会超时的。需要标记到达某个节点后的最小长度,如果下一次搜到这个点长度比这个点存的大,就不需要入队了,入了也白入= =。。#include #include #include #include #原创 2011-08-06 15:46:17 · 1151 阅读 · 0 评论 -
zoj 3516 Tree of Three
一看,恩,感觉以前见过类似的,貌似是树形DP。。正在纠结着呢,党姐说这个可以用DFS解 = =。。想想也是,从根开始搜,回溯的时候更新父节点的前三个最大值即可。话说。。。树形DP是神马。。#include #include #include #include #inclu原创 2011-07-24 22:50:31 · 1094 阅读 · 0 评论 -
zoj 2418 || poj 2078 Matrix
给你一个矩阵,每个矩阵的每一行可以依次往右移动一个位置,最右边移出来的可以补到最左边,也就是循环移动啦。然后问你移动后每列元素的和的最大值最小。移动次数不限。N最大为7。。昨晚给讨论了下,开始算的是7^7,后来想错了,以为是7^9,后来跟党姐讨论了下,确实是7^7,不过有系数,需原创 2011-07-09 09:59:29 · 1403 阅读 · 0 评论 -
UVA 10301 Rings and Glue
坑姐题 = =。。。问你相互覆盖的圈圈最多有多少个。 输出是这个样子的,....1 ring.....0 rings.....x rings. 另一方面 ,看错题了 = =。。应该用搜索的。。。神呐。。 #include #include #include #include #include #include #include #in原创 2011-06-27 13:37:00 · 1584 阅读 · 0 评论 -
zoj 2864 Catch the thief
<br />WA了五版,贡献了50、60次WA。。。我成功地把这个题的AC率降低了好几个百分点。。。伟大吧。。<br /> <br />纠结两天多了><。<br /> <br />废话不多说了,总之,还是道好题的。<br /> <br />说下题意,给你一个图,无向图,有起点,终点,给出q个询问,询问在时间t的时候,小偷可能在哪几个地点。小偷是沿最短路从起点逃到终点的。<br /> <br />因为最短路可能有多条,所以造成同一时间,小偷所在地点不同。<br /> <br />最短路后,然后找所有的最短路径原创 2011-04-01 16:23:00 · 1350 阅读 · 5 评论 -
zoj 1671 Walking Ant
其实蛮喜欢这种题的,但是有的时候需要优化的话总是很恶心。。BFS即可。这题很顺利。。。不过忘记清空队列了,WA了一次 = =。。结构体里存X,Y坐标,当前hp还有步数。如果走过一个点就把hp存下,下次走这个点时候,如果当前hp比存的大,就放入队列,否则,就不放,因为如果加入队列,扩展的方向神马的都一样,但是hp不一样,肯定hp大的更有可能到达目标。蛮喜欢搜索的现在~~#include #include #include #include #include #include using原创 2011-02-11 14:36:00 · 999 阅读 · 0 评论 -
zoj 2110 Tempter of the Bone
<br />DFS。<br /> <br />之前一直TLE了,死活不会优化 = =。。就搜了下。<br /> <br />那个用距离判断的我也加了,还是TLE了 = =。。学到个这个,这一句很神奇。。。<br /> <br /> <br />if( d % 2 != (Time-t) % 2 )<br />return ;<br /> <br /> <br />刚才自己手动模拟了下,理解了。d是当前点与目标点的坐标差。Time-t即从当前点到达目标点需要走多少步。<br /> <br />这两个值的奇偶性原创 2011-02-10 23:23:00 · 1719 阅读 · 3 评论 -
zoj 1649 Rescue
又是类似骑士拯救公主,不过这个是朋友拯救天使的故事。。。不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit time 。SO,杀死一个护卫到达那个格子 2units time。第一反应是广搜,就搜咧 = =。。WA了,交hdu上 AC了,hdu数据真弱啊。。。想了想,想通了,因为一般广搜的话必须都是1个时间才能搜,才能保证这个BFS树是等距离向外伸展的,而这个不是等距离的,所以需要一些处理。1、我的方法是,找到天使后,原创 2011-02-09 22:36:00 · 2953 阅读 · 3 评论 -
poj 3620 Avoid The Lakes(DFS超水。。)
<br />水啊 水。。今晚做的这几道都是一种类型的 呵呵<br /> <br />10分钟搞定~睡觉去,不解释。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int map[110][110],visit[110][110];int m,n,num,mmax,fi,fj,cou;int dir[8] = {0,原创 2010-10-17 23:29:00 · 1965 阅读 · 0 评论 -
zoj 1047 || poj 1111 Image Perimeters(DFS water~)
<br />跟上一道差不多,上一道是求树的个数,这个是给你树的其中的一个点,求圈成这棵树的周长。<br /> <br />我先把这棵树给找出来,然后想怎么算周长啊。。。这么悲剧。。<br /> <br />想了半天没有好方法,看POJ上讨论版了。。。算这棵树点旁边有几个0就可以了,这个旁边是指上下左右点。真聪明啊。。。哎,惭愧。。<br /> <br />POJ1111讨论版很有意思啊,ACMERS对这个题号很纠结,哈哈,光棍节。。。<br /> <br /> <br />/* * */#inc原创 2010-10-17 22:07:00 · 1592 阅读 · 1 评论 -
zoj 1709 || poj 1562 Oil Deposits(DFS 好吧,目前我就是专门找水题做的。。。)
<br />觉得有点像并查集啦。<br /> <br />以前的DFS水题都是搜的四个方向,现在搜八个了。。。FT。。<br /> <br />感觉这个不是太像DFS。。。没有回溯塞。。。觉得就是递归。。。额。。<br /> <br />@的八个方向有@的并一起,输出有多少个。。额。。多少棵这样的树吧,恩,可以这么说。<br /> <br />#include<stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>u原创 2010-10-17 21:19:00 · 1566 阅读 · 0 评论 -
poj 1154 LETTERS(DFS水!)
<br />类似seeding那题。<br /> <br />这个是求从左上角开始走,上下左右搜索,没走过的可以走,找最长的路径。<br /> <br />mmax应该初始化成1,这点WA了几次。。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int visit[30];int n,m;int step[8]原创 2010-10-17 19:33:00 · 2317 阅读 · 0 评论 -
poj 2386 Lake Counting(DFS 杂这么多这种类型的水题啊。。。。)
<br />同1562 找有几个连通的区域,8个方向的搜索。<br /> <br />从昨晚开始做了好几道这种类型了,现在已经很熟练了哈~<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int n,m;int map[110][110],visit[110][110];int cou,fi,fj;int dir原创 2010-10-18 12:58:00 · 3053 阅读 · 0 评论 -
zoj 1089 || poj 2245 Lotto(DFS~)
好吧 这题搜的DFS。。。自己写的,自己想的总是有错,改了好多好多都不对。。。哭啊。。。对DFS还是理解不透。。。呜呜。。。交poj的时候,看讨论版 好多神奇的方法。。。6层循环 我晕。。。确实可以。。。。我了个去。。#include #include #include #include using namespace std;int n,num[14],put[14];void DFS(int d,int current){ if( d > 6 ) { for(原创 2010-10-17 18:38:00 · 1868 阅读 · 0 评论 -
zoj 2100 Seeding(DFS水水~)
<br />激动啊激动啊无比激动啊!!!<br /> <br />可以说是第一道自己完全写的DFS。。。。激动!!!哈哈~~<br /> <br />在物理课上把代码写了写,敲的时候,有些地方还是有点问题的,又想了会,终于摆脱递归+回溯噩梦了。。。。/(^o^)/<br /> <br />专门找的DFS水题。。。因为我一遇到DFS就晕。。。理解不了,今天终于理解好了~~我太伟大了,哈哈哈哈哈哈哈哈哈哈~~<br /> <br />去上选修课去~~偶也~~~<br /> <br />深搜 还是用4个方向去搜索原创 2010-10-14 18:41:00 · 1583 阅读 · 1 评论 -
zoj 2416 Open the Lock(BFS~)
好吧,这道题,我真的卡了好久,为什么呢?没好好读题!!!我了个去!!!本来以为是每次可以变换多个位的 = =。。。结果不是 = =。。以至于我开的数组都没用上 = =。。后来一直没看到那句,不,是没理解,可以交换相邻位 = =。。。一直不对 = =。。。啥破毛病 = =。。。以后要专心看题,专心呐!!!现在代码中注释都用英语写,没其他特殊目的,就是想锻炼英语。。。#include #include #include #include #include using namespace st原创 2010-11-27 23:30:00 · 1335 阅读 · 2 评论 -
zoj 1091 Knight Moves
#include #include #include int state[9][9];int count[9][9];int Queue[100000];int step[8][2] = {1,2, 1,-2, -1,2, -1,-2, 2,1, 2,-1, -2,1, -2,-1};int head,tail;int push(int x){ Queue[head++] = x;}int pop(void){ return Queue[t原创 2010-07-17 15:00:00 · 2009 阅读 · 0 评论 -
09河南省赛 机器人 广搜
机器人这个,做了两道广搜题后,这个就很顺理成章啦~很快滴写出来了~额,这几道题都比较象,基本就是套模板啦。用队列多了,就想确定下自己队列的写法。搜了下其他人的代码,基本队列都是Queue,我还是用Q吧。额,不过Queue比较直观呀~下次用。看到孙柯的广搜代码,C++的,好像包含了个头文件就OK了,真省事啊。。。我还是老老实实先写代码吧。入队出队本来想跟栈写不一样,栈是push和pop,后来觉得写EnQ太麻烦了,好吧,向党学习,写push和pop吧~呵呵~这道题不难,没上一道题繁琐,只用判断两种情况就OK了,原创 2010-07-17 11:44:00 · 1232 阅读 · 4 评论 -
zoj 1005 Jugs || poj 1606 (广搜做法~~~~)
第二道广搜题。目前所写的最长的代码!!!纠结一天了!!!哎。这个题目。还有数学解法的,数学的改天再研究,先说广搜做法。本来根据昨天的那道题,广搜基本已经掌握了,遇到这题还是想了会。因为要控制两个数,还要记录位置。要用队列,想了会,本来想用两个队列,后来想想,如果一个队列按顺序的话就可以了,先出A后出B。关于记录位置这个,本来觉得自己想法还是很好的,用一个数字记录,即到最后的那个数字每个位上的数字代表一个操作,我采用X*10+y。。。后来发现这是个很大的弊端!!!因为整型有范围啊,所以最多有10位,也就是我原创 2010-07-16 21:57:00 · 2319 阅读 · 2 评论 -
07年 ZZUPC校赛第一题 祝福( DFS+BFS ~)
Problem A:祝福【问题描述】得知Atlantis即将沉没的消息以后,King决定把他的人民送到安全的国外去。但是码头已经废弃很多很多年了。码头前有一个迷宫,国王的骑士只身闯入了这个迷宫……骑士在迷宫的出口遇到了不明生物的袭击!骑士因为是单独作战,所以很快便招架不住了,他的大马被打得奄奄一息(。。。)这个时候,迷宫中的两座石像(一个是猫,一个是天使。(!!!!!))里放出了无数锋利的刀片,把不明生物全部杀死,骑士当场晕倒在地。等他醒来,发现马已经死了,手上多了一个戒指,上面写着:“这个戒指会帮助你逃脱原创 2010-12-07 17:47:00 · 874 阅读 · 0 评论