搜索
notmuch
这个作者很懒,什么都没留下…
展开
-
蓝桥杯系列 - 2018国赛 - 迷宫与陷阱
BFS题,大致遵循以下思路:可以设置一个结构体,包含 4 个成员: x, y, step, state。其中 x, y 表示当前处在迷宫中的位置,step 表示到达该位置时总共用了多少步,state 表示无敌状态剩余的步数,state = 0 表示非无敌状态,state > 0 表示处于无敌状态,每走一步就减 1。设置 vis[n][n] 数组, vis[i][j] 记录迷宫位置 i, j 是否被访问过。假设迷宫用 maze[n][n] 表示,当前位置为 curx, cury,当前步数为 st原创 2021-05-08 14:55:28 · 757 阅读 · 1 评论 -
2019牛客暑期多校训练营(第九场)D(折半搜索)
题意:有n个数,给定一个数s,问从这n个数中取出若干个数,使他们的和等于s的方案(输入保证一定存在唯一的方案)题解可参考博客:https://www.icode9.com/content-4-392733.html标程里写的是折半搜索,看了上面的博客,自己打了一遍,感觉更像是枚举+二分搜索(表示不懂折半搜索是啥)。#include<cstdio>#include<ios...原创 2019-08-16 17:56:08 · 128 阅读 · 0 评论 -
2019牛客暑期多校训练营(第二场)F
题意:有2*N个人,分成两队,每组n个人,求一个组中所有人和另外一组的所有人的竞争值之和。比赛时没看懂题目+以为是什么高深难题=没做出来。。。后面看了题解才发现,暴力枚举就可以过了。。。。先将所有人归为1队,总竞争值为0,接下来从里面挑选出n个人,求最大竞争值。#include<cstdio>#include<iostream>#include<algor...原创 2019-07-23 11:14:51 · 118 阅读 · 0 评论 -
牛客习题——牛牛与LCM(数论+搜索)
本人主要用的是DFS搜索,有几处剪枝:1.先检查a[n]中是否有a[i]==x,有直接输出Possible,结束程序;2.再检测x是否为质数,如果是,输出Impossible,结束程序,否则继续;3.另开数组b[n],记录a[n]中可以被x整除的数,这是因为能够构成LCM=x的数,这些数一定是x的因子,最后调用DFS搜索(可以剪掉挺多的数据)。代码如下:#include<cstdi...原创 2019-07-19 10:23:53 · 269 阅读 · 0 评论 -
HDU1242,Rescue(BFS)
一开始还没学BFS,前几次都是用DFS,但很明显,这样做会TLE,于是后来学了BFS之后,改用BFS,就AC了。代码如下:#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<queue>using namespace s...原创 2019-06-22 11:28:46 · 208 阅读 · 0 评论 -
POJ3026,Borg Maze(BFS+最小生成树)
第一次接触BFS居然是和最小生成树结合在一起的。一开始是用DFS求各个A及S之间的最短路径,严重超时。。。网上求助大佬后才知道要用BFS,结果超快!代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>...原创 2019-06-16 10:34:16 · 144 阅读 · 0 评论 -
POJ236,Square(搜索)
这道题做得我很难受。。。剪枝也都对了,思路跟大牛们基本一样,就是疯狂WA,无奈,只好把代码改成跟大牛差不多的才过。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace...原创 2019-05-17 15:29:11 · 165 阅读 · 0 评论 -
POJ3009,Curling 2.0(搜索)
1.不越界,不往回走,相邻不为墙“1”的时候才可以移动,为防止往回走,每次移动完都将前一位置赋值为“-1”以区分2.移动直至遇到墙“1”,或越界,或出口“3”,遇到墙,将墙变为路“0”,继续搜索,搜索完后要恢复为“1”,越界了直接进行下一次搜索,遇到出口处理完数据后直接跳出搜索代码如下:#include<cstdio>#include<iostream>#incl...原创 2019-05-14 17:43:50 · 126 阅读 · 0 评论 -
杭电ACM——2533,N皇后问题(搜索)
突破口:**N*N的棋盘放置N个皇后,因为皇后的特性,合法的放置方法中每行(每列)必定有一个皇后,**因此我们可以先搜索第1行可以放置的位置,再逐步搜索第2行,直到第N行。而不用去穷举第一个棋子在棋盘中的位置,这样做是会超时,而且会重复运算的。代码如下:#include<cstdio>#include<algorithm>#include<iostream&...原创 2019-05-07 11:36:08 · 232 阅读 · 0 评论 -
北大ACM——2488,A Knight's Journey(搜索)
一道DFS的简单题,却做了好久。。。一开始开了两个队列去维护每一步的坐标,结果疯狂错,还一直找不到bug,无奈看了别人的代码,改用了数组才过。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#...原创 2019-05-13 18:26:57 · 270 阅读 · 0 评论 -
杭电ACM——1277,全文搜索(搜索)
突破口:原本思路是将每个key的首个数字去与全文进行暴力匹配,如果匹配到数字相同了,再进行key后面的数字的匹配,但这样超时了。不过这种想法还是可取的,我们可以事先将0-9这10个数字出现的所有位置记录下来,则假如key的首数字为7,就可以直接找到7的位置,进行key后面数字的匹配,而不用从前往后遍历,去找数字7。这样可以省很多时间。代码如下:#include<cstdio>...原创 2019-04-26 23:03:38 · 252 阅读 · 0 评论 -
codeforces——1097B,Petr and a Combination Lock(搜索)
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int a[20],flag=0,n;void search(int s,int x) //s表示当前表的刻度,x表示操作次数{//cout<<s&l...原创 2019-04-02 20:31:01 · 340 阅读 · 0 评论 -
杭电ACM——TempterofTheBone(搜索)
这是一道有趣的迷宫题,也是一道搜索的题目,有点类似于深度搜索,可以通过递归来实现。由于递归很容易超时,所以务必进行“剪枝”!!!一、当迷宫中可走的方块二、“奇偶性剪枝”(比较常用,要记一下):如果“S”的坐标(xs,ys),“D”的坐标(xd,yd)与T满足|xs-xd|+|ys-yd|,T两者的奇偶性不相同,则一定不可能满足要求,直接输出“NO\n”,可以自己画一个有0,1构成的矩阵思考一下...原创 2019-03-07 13:13:57 · 263 阅读 · 0 评论 -
杭电ACM——CallingExtraterrestrialIntelligenceAgain(搜索)
由于只学了单纯用循坏找素数的方法,且此方法复杂度很高,不适合大数据,题中要求4&lt;=m&lt;=100000,如果找出100000内所有质数,肯定会超时,因此需要进行“剪枝”。一、分析,所要求的质数p,q须满足pq&lt;=m, a/b&lt;=p/q&lt;=1, 其中,1&lt;=a&lt;=b&lt;=1000,即Min(a/b)=1/1000。当p&原创 2019-03-07 13:14:11 · 203 阅读 · 0 评论 -
杭电ACM——substrings(搜索)
本题应学会如何将字符串的子串全部罗列出来。要设置三重循坏(仅限数据小的情况)#include&lt;stdio.h&gt;#include&lt;string.h&gt;int main(){int t,n; int i,j,k,l,flag; //i,j,k控制循坏,flag标识 int len,min,max,p=0; //找出所有字...原创 2019-03-07 13:14:22 · 317 阅读 · 0 评论