
ACM_搜索
文章平均质量分 76
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
三维BFS poj2251 Dungeon Master
其实跟普通的BFS并没有很大区别,只不过变成了三维而已,,多了向上和向下两个方向#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;typedef pair PII;const int MX = 50 + 5;const原创 2015-07-20 17:25:30 · 879 阅读 · 0 评论 -
DFS hdu5444 Elven Postman
传送门:点击打开链接题意:类似平衡二叉树,告诉你n个节点,以及n个节点的权值,要求右子节点的权值比根节点权值小,左子节点权值比根节点权值大思路:按照大小建树,顺带保留上一个节点,然后查询的时候只要直接打印路径就行了#include#include#include#include#include#include#include#include#include#inclu原创 2015-09-14 00:34:22 · 847 阅读 · 0 评论 -
BFS预处理 hihoCoder1251 Today Is a Rainy Day
传送门:点击打开链接题意:给你两串序列,长度最长为110,只由1~6组成。现在要把S2串变成S1串。有两种操作,每种操作执行一次代价都是1操作1,把某一个数字变成另一个数字操作2,把某一种数字变成另一个数字求最小代价思路:当时现场赛的时候确实很难想到,以为是一个dp,结果后来讲解的时候,出题人说就是一个BFS,至少BFS是一个非常熟悉的算法啊,当时没做出来有点小遗憾。原创 2015-11-30 17:26:28 · 1482 阅读 · 0 评论 -
DFS Gym100827K Towers
传送门:点击打开链接题意:类似数独,不过还有另外一种限制,从左往右看,从右往左看,从上往下看,从下往上看,看到的塔数应该是固定的。思路:暴搜。好久没暴搜了,呼呼。。#include#include#include#include#include#include#include#include#include#include#include#include#inc原创 2016-01-19 13:35:15 · 856 阅读 · 0 评论 -
DFS Codeforces292C Beautiful IP Addresses
传送门:点击打开链接题意:给n个数字,要求用这n个数字去组成ip,要求每个数字都出现过,且ip里面去掉.后是一个回文思路:大暴力,枚举的时候把ip分一半枚举就行,求出没有.的所有组合,然后再考虑添加.#include#include#include#include#include#include#include#include#include#include#inc原创 2015-12-22 23:41:06 · 1235 阅读 · 0 评论 -
DFS Codeforces440C One-Based Arithmetic
传送门:点击打开链接题意:只能使用由1组成的数字,通过加法和减法得到n。问这些数字的1个个数之和最少是多少。思路:非常经典的一道暴搜题,每一层有2个分支,层数递减,很容易证明复杂度最坏大约是O(2^16)#include#include#include#include#include#include#include#include#include#include#i原创 2016-01-30 16:19:17 · 969 阅读 · 0 评论 -
反素数 51Nod1060 最复杂的数
传送门:点击打开链接题意:把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数。例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6。如果有多个数复杂度相等,输出最小的。思路:原来,这个叫反素数。反素数的详细介绍看这里点击打开链接有了反素数的性质,我们就能DFS搜了#include #include #includ原创 2016-04-07 19:55:01 · 1127 阅读 · 0 评论 -
DFS csu1719 Boggle
传送门:点击打开链接题意:真正的题意是,告诉你一些字符串,然后告诉你很多个字符格子,问这些字符串能否在字符格子中连起来,在格子中对角线也认为是连在一起的。如果格子中的字符是q,其实是代表着qu思路:这题迷之英语,各种猜题意啊,,不过运气好比较早就猜中了,嘿嘿嘿懂题意了后就很简单了,DFS各种搜就行了,因为数据范围比较小#include #include #include #i原创 2016-03-27 20:31:50 · 853 阅读 · 0 评论 -
记忆化搜索 Codeforces666A Reberland Linguistics
传送门:点击打开链接题意:给一个串s(|s| 4,后缀的长度为2或3。要求同一个后缀不会连续出现2次。问有多少后缀。思路:我们直接考虑从后往前搜索,保存后一个词和当前的词。但是这样直接搜索肯定会超时的。不过我们可以发现,中间有大量重复的,所以我们只需要记忆化一下位置,当前词的长度,后一个词的长度,就不会超时了#include #include #include #include原创 2016-04-30 11:14:03 · 676 阅读 · 0 评论 -
删边+DFS hdu5438 Ponds
传送门:点击打开链接题意:有p个池塘,每个池塘有权值,有m条无向边将池塘连接,现在要除掉一些池塘,除掉的池塘必须要有一条边与其相连,无自环,求删除完池塘后,求连通分量中的池塘个数是偶数的联通分量所有权值之和思路:类似拓扑排序,通过度数把点加入到队列中,然后开始删边和删点,点被删除后标记一下,然后就是把所有的点扫一遍DFS,统计连通分量中点的个数和权值而已了#include#inclu原创 2015-09-13 23:39:00 · 991 阅读 · 0 评论 -
DFS nbut1218 You are my brother
传送门:点击打开链接题意:告诉你n个关系,关系(u,v)表示v是u的父亲,现在A是节点1,B是节点2,问A和B的辈分关系思路:这肯定是树型结构,先建立(u,v)的有向边,找到A的祖先root,然后再从root出发看A和B的深度是多少然后比较A和B的深度。trick:A和B可能并不是一个祖先,也就是说A和B可能没有血缘关系,给出的数据并不是一棵树,而是森林,此时应该输出You are原创 2015-08-21 23:01:03 · 821 阅读 · 0 评论 -
DFS csu1513 Kick the ball!
传送门:点击打开链接题意:点球大战,轮流每队点射5个球,A先踢。如果当前比分已经能直接让比赛胜利接下来的球就不需要踢了。问最后的得分是题所给出的得分的概率思路:暴力DFS,直接枚举哪些球进了哪些球没进,注意比赛提前结束这个特殊的剪枝就行。#include#include#include#include#include#include#include#include#in原创 2015-08-18 23:00:09 · 1093 阅读 · 0 评论 -
DFS poj3620 Avoid The Lakes
题意:求最大节点的连通块的节点数量用一个实际参数记录当前连通块里的总数,然后遍历完所有的连通块,找到节点最多的#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;typedef pair PII;const i原创 2015-07-20 17:35:29 · 761 阅读 · 0 评论 -
DFS poj2488 A Knight's Journey
很经典的搜索+最小字典序路径打印巧妙的利用LAST结构体,来保存上一个节点的位置,最后再递归输出#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;typedef pair PII;const int MX = 30;con原创 2015-07-20 17:23:55 · 719 阅读 · 0 评论 -
DFS hdu1258 Sum It Up
题意:求多个数字之和等于K,按照从大到小的顺序,不能有重复的思路:先将所有的数字按照从大到小的顺序排序在普通DFS的基础上,保留答案,每次等于K的时候,用memcpy去与之前的答案比较一遍,看是否有重复的,如果有重复的就不输出了,没重复的就输出#include#include#include#include#include#include#include原创 2015-07-20 17:31:03 · 752 阅读 · 0 评论 -
DFS hdu2553 N皇后问题
直接搜索就可以了只是在标记数组vis上可以作文章vis[0][i]来标记x为i的是否已放了棋子vis[1][i]来标记y为i的是否已放了棋子vis[2][i]来标记x+y为i的一斜行是否已放了棋子vis[3][i]来标记x-y+n为i的是否已放了棋子因为x-y可能为负数,所以加上一个n就不会出现负数了最后,,因为测试样例非常多,但是N原创 2015-07-20 17:40:25 · 867 阅读 · 0 评论 -
DFS poj1315 Basic
题意:告诉你矩阵大小,和里面的障碍,问最多能放多少个车直接DFS枚举所有空格,然后考虑这个点是否能放车,用一个实际参数来表示已经放了多少个是否能放,可以通过从本身位置往四周扩散看是否有已经标记的空白节点来判断然后再考虑这个节点放还是不放,这题就做完了#include#include#include#include#include#include#incl原创 2015-07-20 17:43:53 · 868 阅读 · 0 评论 -
DFS+剪枝 hdu1010 Tempter of the Bone
一个地图,不允许走已经走过的,告诉起点,问是否能在第T时间恰好走到终点其实就是一个DFS,只是有两个地方要注意1.vis刚开始标记后,在退出DFS的时候要去掉标记2.一定要剪枝,否则会超时剪枝可以通过奇偶剪枝,算出起点到重点的曼哈顿距离然后看曼哈顿距离的奇偶性是否和T的奇偶性一样,如果一样就有可能到,如果不一样,必然不能到,直接输出返回#includ原创 2015-07-21 15:14:11 · 937 阅读 · 0 评论 -
DFS nbut1218 You are my brother
传送门:点击打开链接告诉你一些a和b,b是a的父亲,问节点1和2的辈分关系。思路:很明显这是一棵树形结构。先从节点连向根建图,然后从节点1出发DFS,这样能找到根节点然后再从根节点往节点建图,找节点1和节点2的深度,再比较深度容易错的地方:节点1和节点2可能并不在同一颗树中,这时要输出You are my brother#include#include#includ原创 2015-08-17 19:11:06 · 868 阅读 · 0 评论 -
暴搜 bnu51645 ACM Battle
传送门:点击打开链接题意:一个图,选点,覆盖所有的边。(n 思路:本身这是一道NPC问题,但是因为最多只能选10个点,所以我们可以暴搜。重点是暴搜的方法,如果是按照点去暴搜的话,复杂度还是会爆炸。我们考虑到,每一条边的两个节点中,至少有一个节点会被覆盖。所以我们按照这个去暴搜,复杂度就只有O(2^10*m),十分的神奇!#include #include #includ原创 2016-04-23 17:42:40 · 677 阅读 · 0 评论