搜索
“搜索”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1162 填涂颜色
很简单的一个广搜题,就像模板一样。原创 2022-08-02 18:50:31 · 297 阅读 · 0 评论 -
1157 组合的输出(easy 大法师)
如果我们填数,就要从上一个数+1开始填 1 2 3 这就是一个常识性的问题。表示对于当前step,就是要填入的位置,也就是说我们要搜索位置。很简单的搜索,直接模拟就好。所以边界就是step>r。如果不是我们就要进行搜索。首先我们要从1开始搜索。...原创 2022-08-02 18:18:01 · 238 阅读 · 0 评论 -
1123 取数游戏
代码】1123取数游戏。原创 2022-07-31 23:31:50 · 728 阅读 · 0 评论 -
1086 花生采摘(绝对值计算距离)
很简单的搜索,广度优先,没有什么。原创 2022-07-20 23:31:21 · 174 阅读 · 0 评论 -
1037 产生数
然后给定一个变化的规则,这些规则可以不同的使用,所以就会产生不同变化,求最多的不相同的变化有几个。其实这个题完全可以转化成图,这个所谓的变化就是一个有向边。用弗洛伊德的算法求出每一个数字可以变化成多少个不同的数字。然后就是结果过大,需要用高精,用高精进行去重。我们稍微一思考就明白了。...原创 2022-07-16 19:06:29 · 171 阅读 · 0 评论 -
1031均分纸牌
求平均数,(这个平均数就是所谓的那个最终相等数)然后算出每个数与平均数大小关系,+1-1等。怎么移动使得这些纸牌都相等,还有就是这些纸牌怎么搞到那个相等的值?怎么移动的数量又是最小。我们将每一个与平均数的关系都存到一个数组里面,bar[i]表示与平均数的关系。我们没有必要再把bar[i]进行赋值什么的,当然这不影响你的结果。就是加上就好了,bar[i+1]+=bar[i]如果关系不为平均数相等,那么就开始进行操作。每堆上有若干张,但纸牌总数必为N的倍数。将纸牌进行移动,让所有纸牌进行相等,...原创 2022-07-16 18:44:42 · 204 阅读 · 0 评论 -
1036 选数
这个题意思就是给你n个数,然后任意选取m个数进行相加,请问有几个素数。其实这样的橙色题都差不多的题型,都是很简单的。不是,只是一个很水的质数判断。首先看这个题涉及的算法。原创 2022-07-16 15:49:22 · 138 阅读 · 0 评论 -
1605 迷宫
这里要告诉大家一个常识,memset不要用来全部赋值为1,这个函数好像只能用来赋值为0,我一开始的时候搞mp就弄错了,所以导致才只有30分,mp都炸了3000多居然不爆0。矩阵题的搜索很方便,自己字符输入,这样的按照坐标存储的也不是不方便,这两种的区别在哪里呢?虽然太水了,但我还是想做做玩。注意,这个题让我们求方案总数。所以这就是一个动态规划。...原创 2022-07-16 15:06:00 · 116 阅读 · 0 评论 -
1025 数的划分
所以因为总共的和是num,也就是剩下的num,那么每一组最大最大也就是num/part。题意其实很好理解了,就是将一个数n分成k份,当然显而易见的就是每一份加起来就是n。显然,当k=1的时候,只有一种方法,所以这就是递推的结束开口。所以我们不需要枚举到num,只需要枚举到num/part。这个题貌似非常的不好理解,需要认真来完成,解析。这样类似于递推的题目通常都有一个显而易见的答案。num/part就是一个剪纸。这不就是深搜吗,深搜填数。我记得原来zp老师讲过。...原创 2022-07-16 10:58:00 · 105 阅读 · 0 评论 -
1238 走迷宫
1238 走迷宫原创 2022-07-14 18:36:54 · 136 阅读 · 0 评论 -
1825 Corn Maze S
1825 corn maze s原创 2022-07-11 16:48:30 · 123 阅读 · 0 评论 -
1145 约瑟夫
然后没杀死一个坏人都要进行一个存储,最后如果杀到了好人就直接结束。---------重新-----------------这个题就是一个很简单的枚举,因为好人坏人都是确定的。这个题是一个逆向的思维,给定结果问你最初的开始。约瑟夫问题无非就是这样的,一环人不断的出队。所以我们可以枚举这个k因为我们知道上线。也就是前k个好人,再往后的k就是坏人。其实这个题就是一个类似于搜素的东西。...原创 2022-07-08 17:22:23 · 163 阅读 · 0 评论 -
1210 最长的回文&字符串基础常识
1210 最长回文原创 2022-07-08 17:00:55 · 148 阅读 · 0 评论 -
3956 棋盘
3956 棋盘记得去年做这道题的时候,还是一个朦胧的少年,一年过后,我已封神当年做这道题是在机房做的,没几分钟就A了实际上这个题就是搜索,很水的搜索再仔细看一下,貌似用dp也可以其实这个题真是水稻了,就是一个很简单的模拟吧其实对于模拟这个算法,并没有实际的定义,也没有实际的框架,就是单纯的从字面意思去理解的模拟可以是搜索,也可以是枚举,也可以是暴力反正,普及组的神器就是模拟好了切入一下正题对于当前的格子x,y都有他的后继xx,yy 对于他的下一个格子如何计算呢,则有两种情况有色 无色原创 2021-10-16 10:15:22 · 131 阅读 · 0 评论 -
一本通之深度搜索合集
一本通之深度搜索合集其实比起广搜,深搜的应用范围更广泛,深搜的题目也是更经典的所以,深搜,我来了!?!?!?!?!?!1222 放苹果这个题不是之前在递推中做过吗?其实方法差不多了#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int t;int m,n;in原创 2021-10-04 15:27:48 · 246 阅读 · 0 评论 -
一本通之广度搜索合集
一本通之广度搜索合集今天的目的是练习所有关于搜索的题目,我一定加油,新题到今天就结束吧关于洛谷上的题,也是尽量的能找回来就找回来,一些水题我就不整理了废话少说,开干吧其实搜索对于我来说并不难,之前在日照也都训练过了,但是有些遗忘,所以还得重复学习一下1329 细胞细胞,貌似听说过这个题也就是求连通块吧,不就是油田吗?貌似这个题连数据范围都没有注意这里要单独开一个字符输入,因为数组都是连一块的还有就是,我在这里开了一个二维数组来存队列,其实意思和queue是一样的只不过要开结构体,这样更方原创 2021-10-04 12:44:14 · 174 阅读 · 0 评论 -
1784 数独
1784 数独题意不用解释,就是给你一个数独让你填满其实如果你觉得可以你也可以用打表的形式,枚举9 × 9 × 9种可能当然啊,这个题是用来练习搜索的普通的搜索,先将所以的格子判断为true,不为零的判断为false,为达到不重复的目的要将坐标的二维数组拆成行列格三个一维数组然后就是需要回溯回溯的时候h写成了l于是,wa了3次#include<iostream>#include<cstdio>#include<algorithm>#include<原创 2021-10-03 10:24:46 · 139 阅读 · 0 评论 -
UVA572 油田
UVA572 油田首先这道题我做过,只是没有提交过算是搜索中比较重要的首先,我们要明白,为什么要学搜索?是为了骗dp的分所以,我们学搜索,有的时候就是能骗动态规划的分数,最起码能骗40分虽然说搜索这个东西,我已经烂熟于心了,但是毕竟已经两年的左右没有练习了,需要重温一下先从他开始吧//DFS#include<cstdio>#include<cstring>#include<iostream>using namespace std;const in原创 2021-10-02 15:33:56 · 118 阅读 · 0 评论 -
5507 机关
5507 机关题意:有12个旋钮,每个旋钮开始时处于状态 1~4,每次操作可以往规定方向转动一个旋钮(1⇒2⇒3⇒4⇒1)并且会触发一次连锁反应:处某个状态的旋钮在旋转时会引起另一个旋钮发生相同方向的转动(另一个旋钮转动不会再触发连锁反应)。问将12个旋钮都置为 11 至少需要几次转动,并输出每次转动的旋钮编号这个题有两种做法,双向BFS和启发式搜索双向BFS其实也可以简单暴力的BFS,每次转动都有12种选择,时间复杂度会炸那么BFS会炸,是因为搜索树太大了,并且这个题的起始状态和终止状态都是原创 2021-08-30 18:52:40 · 202 阅读 · 0 评论 -
2324 骑士精神
2324 骑士精神搜索,启发式搜索,A搜索…你觉得我会会吗,我肯定不会,我这么菜不过不会,也得会这个题给定一个55的棋盘上有12个白色的骑士和12个黑色的骑士,还有一个空位每一个其实都能按照骑士的走法移动到空位上然后给定一个棋盘,怎么才能移动下面的目标的棋盘很明显这是一个搜索普通的迭代搜索,加上常数优化,原来代码在每层都用一个5*5循环查有多少个不同很显然,如果枚举骑士分布,状态巨多,会很浪费时间,并且不好判断,所以换个思路换什么思路?不移动骑士,移动空格迭代加什么就是每次限制搜索原创 2021-08-30 18:05:03 · 295 阅读 · 0 评论 -
6154 游走
6154 游走拓扑搜索不会和期望有什么关系??嘿嘿,因为这个题的名字叫游走,所以这个题我会用懒散的方式完成这道题好了正题开始首先这个题没有什么难理解的,就是来计算一个图的期望,先考虑期望怎么计算很显然答案为L/S,其中L为路径总长度,S为路径条数接下来就是解决图论考虑到问题是DAG,我们可以拓扑排序后dp一下设fi表示以i为终点的路径总长度gi为以i为终点的路径条数显然fi=fj+gj(j表示i的子节点)gi=sigma{gj}(j表示i的节点)很好理解这个公式,就是j到i有边时原创 2021-08-30 17:21:02 · 129 阅读 · 0 评论 -
1213 The Clocks
1213 The Clocks位进制搜索,比较难,代码量通常会很少不过我貌似看了好长时间都不理解是什么意思这个题呢,他的精髓就在于暴力搜索,他的思路大部分都是如此,比较难,代码往往会很长其实搜索就是一个枚举的过程,通常在搜索中都会涉及到方位数组,这个东西大家都很熟悉了,方位数组在这个题里就很类似了#include<iostream>#define M 9//3*3 using namespace std;int node[M][M]={//打表作为移动的方式 {1,1,0,1,原创 2021-08-30 14:19:19 · 163 阅读 · 0 评论 -
1078 文化之旅
1078 文化之旅好像这个题是一个错误的,这是我见过这么多题目中,n<=100的题首先,这个题可以用最短路加上启发式搜索来解决这个题,然后用剪枝来过看一下题目,如果他学习了这种文化,他就不能到达排斥这个文化的国家去所以这次的最短路径,需要考虑排斥这个限制所以我们先忽略文化排斥这个限制,跑一下最短路径,然后再用搜索判断一下文化排斥#include<cmath>#include<cstdio>#include<cstring>#include<a原创 2021-08-30 13:35:11 · 175 阅读 · 0 评论 -
1074 靶形数独
1074 靶形数独搜索,搜索,搜索看到搜索这两个字,我往往会很开心,因为之前我的搜索最没有问题,但那只是简单的搜索罢了加油,接着练习!我不懂题是什么意思数独,大家都玩过我们用dfs,不用打表,用序列s保存要填的点,dfs携带的参数就是要填写的点的坐标s[i][0]与s[i][1]存点的坐标,s[i][2]存点的值,s[i][3]存点所在的宫格我们需要注意一个地方1.dfs的过程中就判断数能不能放,放别的最后判断,实现方法用三个数组分别存各行、列、宫格的每个数字的状态(0表示没填过,1表示填原创 2021-08-30 13:00:18 · 111 阅读 · 0 评论 -
1032 字串变换
1032 字串变换开学还有两天,我却没有努力补作业,在这里刷题…开学之前练练一些78的搜索剪枝、迭代加深,启发式等还有一些图论还没有结业,今天全部结束,然后明天搞搞作业准备开学给定两个字符串通过一系列的操作进行更改,貌似和搜索并没有关系?解决这道题可以用迭代加深搜索,正常情况,dfs会超时,可以用迭代加深,就好了这是第一种做法,做完这个我再来练习剪枝优化,毕竟我是来练习剪枝的或者,双向广搜迭代普通的dfs要一路搜索到底,一路走南墙,可能会在错误答案上一路走到黑,从而浪费大量的时间迭代加原创 2021-08-29 14:55:50 · 187 阅读 · 0 评论 -
迭代加深
迭代加深搜索算法深度优先搜索,从一个分支进行一个深入,直至碰到边界了才会回溯这种算法肯定具有一些不足如果我们的分支过多,而我们的节点所处的位置很浅的话,那么就白白浪费时间,在错误的分支上找不到答案这个时候我们就可以对我们的搜索范围进行一个限制,如果当前限制找不到答案,就把深度限制增加,重新进行搜索,这就是迭代加深思想,所谓的迭代就是说渐渐逼近答案的意思其实个人感觉和广搜差不多也就是说,搜索树的规模随和层次的深入增长很快,我们还可以确定答案就在浅层上,就要实现迭代加深算法也就是说,使用这个算法之原创 2021-05-04 15:00:02 · 300 阅读 · 0 评论 -
1189 SEARCH
1189 SEARCH这是洛谷唯一一个迭代加深的题目,真的是太少了,用它来练练手这个问题的求解思路就是说按照它所给的方向进行一个搜索,而不是我们一贯的使用上下左右的顺序了,这就是我之前和zqc问的一样,分题而异,这个题就得按照所给方向搜索函数,第一次从小偷位置开始,每次获取当前所在点的坐标,然后枚举所给的方向d,实现预备好方位数组,然后判度递归并且不能为’X‘,接着递归,坐标加上方位数组这里的获取方位数组,比较巧妙,枚举四个方位到底是哪一个方向,然后返回0 1 2 3,根据这个在找到事先准备的方位数原创 2021-05-09 22:21:49 · 599 阅读 · 0 评论 -
剪枝优化
剪枝优化剪枝 ,减小搜索树 的规模,尽早地排除搜索树中不必要地分支地一种手段,形象地看,就好比剪掉了树地枝条,所以取名为剪枝,剪枝在深搜里有一下的方法1.优化搜索顺序在一些搜索问题中,搜索树的各个层次各个分支之间的顺序是不固定的,不同的顺序会产生不同的形态,大小也会差很远,所以我们可以调解顺序2.排除等效冗余这种方法就是不做多余的选择,只对那些有用的分支进行递归3.可先行性这个方法的意思就是我们及时进行一个检查,如果发现达到不了边界,及时回溯,结束这次递归,就好比我们走着路,如果远远的就看见前原创 2021-05-04 14:19:17 · 486 阅读 · 0 评论 -
A*搜索
A*搜索原创 2021-05-09 11:21:59 · 168 阅读 · 0 评论 -
记忆化搜索
记忆化搜索记忆化搜索是用递归来进行实现的,但是递归也就是深搜的时候,有一些结果会被重复计算,这样的话会大大的降低时间的效率那么记忆化搜索是指在递归的过程中,就将已经的结果保存一下,当之后用的时候直接取出结果,避免重复计算,也就是使用标记数组,提高算法的效率,通常和动态规划一起使用用一个公式来说,就是说:记忆化搜索=搜索的外形+动态规划的思想我的理解就是,典型的用空间取换时间,如果运用到了,直接返回之前的运算,不再做以后的搜索,来节省时间,能记录就记录(通常用数组),避免重复的使用记忆化搜索必须运用原创 2021-05-15 12:17:58 · 217 阅读 · 0 评论 -
搜索
树与图的深度优先遍历深度优先遍历,就是把每个顶点的x上面对每个分支时,任意 选一条边走下去,执行递归,直至回溯之后,在考虑其他边的走向通常在图与树中使用邻接表来存储那么head为表头数组,ver edge就是用来存储权值和终点自己理解的邻接表靠的是存储边的编号来存图,比较抽象,但是以此遍历编号,head存编号,头节点在e的编号,每个e再存上一条边,以此循环直至为0(有人喜欢设置为-1)。next存储的上一条边的编号,head存储以这个点开始的最后一个边编号void dfs(int x)//遍历边原创 2021-05-04 13:38:27 · 149 阅读 · 0 评论
分享