![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爆搜
AcerMo
一只辣鸡大学生
展开
-
BZOJ1415&&洛谷P4206 [NOI2005]聪聪与可可
期望+BFS+记搜这题很神奇思路可可会跑,所以我们肯定不能每次动态求聪聪要咋走,然后发现总点数很少?我们对每个点BFS一遍,求出dis[x][y]dis[x][y]dis[x][y]也就是图中每两个点之间的路径长,然后根据这个长度,我们可以求出来一个go[x][y]go[x][y]go[x][y]表示当聪聪在xxx,可可在yyy时,聪聪会怎么走,判断就是dis[x][y]=dis[to[i...原创 2018-10-24 11:12:57 · 273 阅读 · 0 评论 -
BZOJ3109&&洛谷P4573 [CQOI2013]新数独
大爆搜,就是读入的时候比较麻烦,但我写的还是比较清楚的代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int id[...原创 2018-08-07 20:02:39 · 294 阅读 · 1 评论 -
BZOJ1024&&洛谷P4160 [SCOI2009]生日快乐
搜索等分点,看在哪部分找就行了代码//By AcerMo#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const double M=1e9+7;int n;double a,b;double...原创 2018-08-02 21:25:49 · 217 阅读 · 0 评论 -
POJ3252Round Numbers
一道数(sou)位(suo)d(da)p(fa)我们定义dfs(int p,int sub,bool jud,bool zero)p是从高到低枚举的位数,sub是到当前为止,0的个数与1的个数的差,jud是判断当前这位是否可以肆无忌惮的填数,也就是之前某位是不是已经比R的对应位小了,然后是zero,判断之前的位中,是否已经有了1然后就是搜索大法好了代码//By AcerMo ...原创 2018-08-14 19:43:31 · 183 阅读 · 0 评论 -
纪中OJ 3470NOIP2013模拟联考8】最短路(path)
一开始一点思路都木有后来才发现,k只有10个,完全可以枚举走的顺序所以,实现就是求出每个点到其他点的最短路,然后暴力dfs枚举走的路线取min然后注意输出-1的情况和爆long long的情况代码//By AcerMo#include<cmath>#include<queue>#include<cstdio>#include<...原创 2018-08-06 17:04:07 · 254 阅读 · 0 评论 -
BZOJ1026&&洛谷P2657 [SCOI2009]windy数
搜索大法好,基本上是裸的记忆化搜索代码#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int l,r;int f[50][20],lim[50];int...原创 2018-08-01 17:30:21 · 211 阅读 · 0 评论 -
BZOJ1853&&P2567 [SCOI2010]幸运数字
一开始以为是数位dp然后发现不可做,因为每一位不固定,然后就想到了dfs枚举,会TLE令x记录当前已经枚举到了第几个数,y记录已经选了几个数,z表示这几个数的最小公倍数 剪枝:当最小公倍数大于上界r时返回代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#inc...原创 2018-07-31 15:33:57 · 210 阅读 · 0 评论 -
BZOJ1833&&洛谷P2602 [ZJOI2010]数字计数
搜索大法好记忆化搜索,搜索每个数出现的次数就行,也没剪枝,就是记忆化//By AcerMo#include<cstring>#include<iostream>#define lli long long int using namespace std;lli f[20][2][20][2],cnt[15];lli dfs(int len,bool ju...原创 2018-07-26 15:57:00 · 244 阅读 · 0 评论 -
POJ1753Flip Game
据说是大模拟。。。用的IDADFS水过加了个小剪枝,就是黑色和白色剩余的最少的数量加上当前的深度大于限制深度就可以return 了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorith...原创 2018-07-19 16:14:29 · 182 阅读 · 0 评论 -
BZOJ4521&&洛谷P4124 [CQOI2016]手机号码
搜索大法好代码比较清楚就不细讲了,为了避免前导零,我们直接枚举第一位就行了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define lli long long ...原创 2018-08-31 21:45:23 · 270 阅读 · 0 评论 -
BZOJ1709&&洛谷P2476 [SCOI2008]着色方案
记忆化搜索我们定义f[i]表示能涂i个格子的颜色的种树dfs(f1,f2,f3,f4,f5,la)分别表示能涂1,~5个格子的颜色还剩多少种,上一格涂得颜色是能涂la个格子的颜色然后la-1就会多一个,然后我们将这种颜色-1,然后乘法原理,乘上剩下的方案数,看代码上的解释吧代码//By AcerMo#include<cmath>#include<cstd...原创 2018-09-04 09:51:43 · 194 阅读 · 0 评论 -
洛谷P2578 [ZJOI2005]九数码游戏
搜索好题!一个有 神器 神奇操作的八数码直接逆向BFS,对于每种状态,判重and记录扩展到他的id,以及给他一个id,搜到输入的局面后,倒序输出就行了代码#include<queue>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#in...原创 2018-10-10 21:05:42 · 373 阅读 · 0 评论 -
洛谷P2346四子连棋
搜索好题啊迭代加深DFS我个人比较喜欢叫IDFS讲一下搜索大体思路发现最终移动步数应该会很少,毕竟八数码都能过,所以选了这个迭代加深的dfs,就是通过限制一次dfs的深度,来保证你的搜索不会在搜到底或找不到解的情况下返回,他会以lim的深度限制,把这个深度能到的点都搜出来,判断可行,画成图的话会发现这种搜索就像是结合了BFS与DFS,既有广度也有深度实际操作分成两次迭代加深,第一次从白...原创 2018-10-08 14:32:26 · 312 阅读 · 0 评论 -
BZOJ3208花神的秒题计划
记忆化搜索暴力模拟即可每次保护或撤销或改变海拔就暴力修改,然后对于询问,记忆化搜索一下就好了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace ...原创 2018-10-12 15:06:01 · 213 阅读 · 0 评论 -
Codevs 1288 埃及分数
搜索好题IDFS实现过程IDFS(int dep,lli a,lli b)限制深度之后,从小到大枚举每个数,然后因为要求字典序最小,所以当前层要大于上一层的数,到最后一层后判断剩下的部分能不能写成最简分数,能写就可以回溯了剪枝1:因为我们每次从剩余的分数里减去枚举的数,所以就会剩下 (ai−b)(b∗i)\frac{(ai-b)}{(b * i)}(b∗i)(ai−b)所以分子不能小于...原创 2018-10-11 11:28:21 · 293 阅读 · 0 评论 -
洛谷P1831 杠杆数
数位DP区间求符合条件的数的个数,不出意外应该是记搜大法好了2333我们枚举平衡点,然后最后判断两侧数是否相等就行了我们定义dfs(int p,int w,int s,bool j,bool z)分别表示第p位,平衡点在第w位,当前和为s,是否有数位限制,是否有前导零然后我们就可以大力搜索了,s的更新是s+(p-w)*i发现平衡点两侧的p-w符号不同,然后剪枝,当s<0时,retu...原创 2018-10-02 19:15:31 · 356 阅读 · 0 评论 -
BZOJ1055&&洛谷P4290 [HAOI2008]玩具取名
记忆化搜索(正解是区间dp)我们定义dfs(l,r,k)表示区间l~r能不能用第k种字符展开,然后爆搜就好了,用了一个字符-->数字的映射代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<a...原创 2018-09-13 14:40:37 · 206 阅读 · 0 评论 -
BZOJ3598&&洛谷P3286 [SCOI2014]方伯伯的商场之旅
数位DP神题(至少我是这样认为的)说一下抄来的思路我们先假设平衡位置在第一位(最左边),然后算出现在的总代价,然后我们再枚举其他位置时的贡献差自己模拟一下平衡位置右移过程中的变化,假设i是第p位且在现在的平衡点k的右侧,之前的贡献是i*(p-k+1),现在是i*(p-k),差值是一个i所以+i,反之亦然是-i,然后就没了代码//By AcerMo#include<cm...原创 2018-09-07 19:09:54 · 189 阅读 · 0 评论 -
洛谷P3953 [NOIP2017]逛公园
SPFA+DFS我们先反向建图求一下n到各点的最短路,然后发现k特别小,我们就可以从0到k枚举每次可以额外走的长度,然后从1开始dfs,然后记忆化一下,记录还有到第i个点,还剩下j长度的方案数,然后记录一下这个状态在本次搜索有木有搜到过,搜到过就有环了呗然后就没了代码//By AcerMo#include<cmath>#include<queue>#...原创 2018-09-01 09:47:05 · 271 阅读 · 0 评论 -
CF986C AND Graph
搜索+思维好题我们考虑在什么情况先x&y=0,因为&相当于乘法也就是说两个1相见的时候才是1,那么我们可以得到,x,y二进制表达之后,x有1的位置,y必定都是0,x是0的位置y可以是0也可以是1,比如x=10011(假设x的位数已经是最大),那么y最大就是01100,也可以将y上任意一个1换成0,也就是说可以将y拆成{00100,01000,00000}所以我们可以得出,对于一个还...原创 2018-07-06 19:13:41 · 568 阅读 · 0 评论 -
BZOJ4325&&洛谷P2668[NOIP2015]斗地主
毒瘤大模拟,披着搜索的皮。。。没错,就是皮。。恶心死了,,,PoPoQQQ大爷说的没错,JB题//By AcerMo #include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace s...原创 2018-07-18 19:35:56 · 236 阅读 · 0 评论 -
POJ1190&&洛谷P1731生 日 蛋糕
爆搜emm代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n,m,ans=1e9+7;int S[25],V[25...原创 2018-07-18 19:06:19 · 211 阅读 · 0 评论 -
POJ 4007 Flood-it!
玩一玩?题目大意,多组样例输入,一个边长为n的数字矩阵,由0~5的数字构成,你的任务是用最少的步数使图中颜色一样,游戏中点击任意颜色的方块都会使左上角的联通块变色,说不明白,语文不好,看图吧左上现在是一个黄色的联通块,我如果点击图中任意一个紫色,他就会变成如下呐,紫色了,现在他们三个算一个联通块,我点击什么颜色这个联通块就会变成什么颜色然后显然,直接爆搜会炸,所以IDA*,限制深度,暴力搜索点击每...原创 2018-04-10 21:57:07 · 855 阅读 · 0 评论 -
BZOJ 4800 [Ceoi2015]Ice Hockey World Championship
题目中文,不解释,(这个ceoi貌似是欧洲的emm)一眼背包,两眼看到longlong的数据,三眼果断弃掉dp正解为折半暴搜,先搜前n/2小,再搜后n/2然后一边暴搜后n/2,一边统计方案数思路讲不清emmmmm,日后更新#include<cmath>#include<cstdio>#include<cstring>#include<iostream...原创 2018-04-15 22:06:50 · 258 阅读 · 0 评论 -
NOIP 2014 Day2T2 寻找道路
题目中文,不需要我说,直接讲思路题目要求找到一条从起点到终点的路径,而且保证最短的前提下,每个点的出边连接的点都要能到达终点,so第一步,反向建图,跑一遍bfs,确定能到达终点的所有点第二步,减掉连着不能到达终点的点的点以及不能到达终点的点,用一个随便什么数组记录能用的点就好了第三步,正常的最短路,只需要加上刚刚判断的这个点能不能用就好第四步,没了,emmm代码#include<cmath&...原创 2018-04-15 21:54:25 · 198 阅读 · 0 评论 -
POJ 3083 Children of the Candy Corn
题目大意,t组数据循环读入,注意,题目输入的是m列n行,emmm,被坑了,有一个起点S,一个终点E,对于每组数据你需要输出,优先向左转到达E的步数,优先向右转到达E的步数,以及最少到达E的步数优先向左转,我们定义,从某步从x->y,那么从x到y的方向即为当前正方向,优先向左转的意义为优先到当前正方向的左方,左方没有道路,那么就按正常搜素优先向右转同左思路,两个dfs+一个bfs,dfs求带优...原创 2018-04-15 21:43:04 · 166 阅读 · 1 评论 -
POJ 2449 k短路
原题戳这道题呢,恶心,emmmm用了一个A*,顺路学了A*;A*的主要思想就是一个函数f(x)=h(x)+g(x)此题中h(x)就是当前点到重点的最短路g(x)是从其他点掰过来的估价值先反向存图跑一遍SPFA,求dis,然后正向存图跑A*就Ok啦代码//By Acer.mo#include<algorithm>#include<iostream>#include<...原创 2018-03-18 09:46:27 · 234 阅读 · 0 评论 -
POJ 2286 The Rotation Game
题目大意,一个#字形的图,共24个格子,每个格子里有一个数字,1/2/3,你的任务是,移动最少的步数使中间八个格子数字相同,这里的移动是指每一横行或每一纵行错位,例如,C行开始为1233211,移动一步->1123321或者2332111,你需要输出移动方式以及最后八个格子中那个共同的数字思路,爆搜,普通搜索会崩掉,因为有*****种排列方式,所以我们选择一个更浪的算法,IDA*,这道题中用...原创 2018-04-09 22:29:25 · 258 阅读 · 0 评论 -
POJ 3172 Scales
题目大意,给你n个砝码,你需要挑出一些砝码来使重量总和最大但不超过m,最开始想到的肯定是dp,但是你会发现longlong级别的dp,好像会爆,所以果断dfs,剪枝步骤为如果当前加进来的重量加上已有质量小于求出来的最大值,就continue,如果加进来大于m,也continue代码By Acer.Mo#include<cstdio>#include<iostream>u...原创 2018-04-01 15:11:36 · 229 阅读 · 0 评论 -
POJ 1167 The Buses
懵逼*(一下午+一晚上)找到所有可行路线然后枚举暴力找需要车最少的路线方案dfs代码By Acer.Mo#include<cmath>#include<queue>#include<deque>#include<stack>#include<vector>#include<cstdio>#include<st...原创 2018-04-01 20:42:54 · 476 阅读 · 0 评论 -
BZOJ 3629&&洛谷4397[JLOI2014] 聪明的燕姿
看那么多人给燕姿打call,那就默默+1题里说的很清楚,约数和等于s的数是答案先普及一些东西一个数可以分解为P1^a1*P2^a2*.......*Pn^an,其中P1~Pn都是素数,(算术基本定理:任何一个大于 1 的自然数(不为素数)可以分解成一些素数的乘积;并且在不计次序的情况下,这种分解方式是唯一的。),这个定理,我们可以说是显然的,我们从2开始,如果他MOD2==0,说明可以...原创 2018-04-03 17:44:43 · 371 阅读 · 0 评论 -
POJ 2688 Clean Robot
题意,n行m列的地图,‘ . ',代表可以走的道路,' o ',你的初始位置,‘ x ' 墙,' * ',垃圾,也就是你要去的地方,你的任务是找到一条最短路径来清理垃圾,若没有这条路,则输出-1,多组输入思路据说是TSP然而我不会,据说可以状压DP,然而我是DP白痴,那怎么办,暴搜呗第一步,存图,读图很容易,但是我们需要将起点和所有垃圾的位置记录下来,方便搜索用,下面讲怎么用第二步,建图,因为我们...原创 2018-04-16 23:34:00 · 227 阅读 · 0 评论 -
POJ2676Sudoku
搜索好题,枚举每个位置的数字,没了。。。记得从9,9->1,1不然会T?代码//By AcerMo#include<cmath>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>using...原创 2018-07-05 21:03:05 · 84 阅读 · 0 评论 -
NOIP模拟赛-密室(Room)
题目在这里是道状压dp,我不会。。。。那就搜索吧!骗暴力分,然后A了,0ms爆搜过程我们将每一个门的{内容物}压到结构体里,然后算一下 sub=(redkey+greenkey+whitekey-redlock-greenlock)(sub也加入结构体),如果是负数的话,那我们不需要考虑这扇门,因为我们不可能做一个决策使自己的物品变少,我们计算完后,按sub从大到小排序,因为sub大的最优的可能...原创 2018-07-05 16:57:52 · 268 阅读 · 0 评论 -
洛谷P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
迭代加深DFS,暴力枚举就行啦。。。代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n,m,lim;int a[30]...原创 2018-07-17 20:10:24 · 309 阅读 · 0 评论 -
洛谷P1514 引水入城
想用搜索水一水,结果一水就是一下午emmm用第一层的点去更新其他层的点,并记录能更新到的最远的端点,然后下面判断是否最底层都能到达,都能到达就通过记录的左右端点来更新,使在最少使用的情况下框到最大的范围就行了代码//By AcerMo#include<cmath>#include<queue>#include<cstdio>#include<cst...原创 2018-07-04 16:31:01 · 182 阅读 · 0 评论 -
洛谷P1034矩形覆盖
据说是dp,所以我用DFS,居然A了,数据真水说说思路,我们要求覆盖所有点且不能重叠,显然我们要从点入手,我们可以枚举每个点被哪个矩形重叠,因为如果枚举矩形覆盖点的话,貌似不可做,具体怎么实现呢?最好小伙伴们手动画个图,一下就明白了,枚举每个点被哪个矩形覆盖,那么必然是要根据点的坐标来调整矩形的位置,所以我们需要判断当前枚举的点的坐标与当前矩形的关系,显然有两种关系,在矩形内部,在矩形外部,在内部...原创 2018-06-27 08:15:29 · 354 阅读 · 0 评论 -
BZOJ1085&&洛谷P2324骑士精神
中文题意不再赘述这是一道非常好的入门水题博主用的IDA*,因为题目中给了最大搜索深度,讲一讲做法先预处理一个end数组,代表地图最后要形成的样子,白旗为1,黑棋为0,空格为2然后模拟每个棋子向八个方向跳能不能跳到空格,这些都很容易想,但也容易超时所以我们要想剪枝我们不难发现,一次只能跳一个棋子,并且只会影响该棋子与空格的位置,那么我们在开始搜索前判断一下当前图中有多少棋子没有归位,那么我们就最少需...原创 2018-06-25 17:37:26 · 250 阅读 · 0 评论 -
POJ 3134 Power Calculus IDA*
题目大意,循环读入一个1~1000的数字n,你现在只有一个数x,你的任务是输出得到x^n需要的最小步数,你可以使用当前循环里得到的任意数,题里的x^31,可以通过如下步骤1. x*x->x^22.x^2 * x^2 ->x^43.x^4 * x^4 ->x^84.x^8 * x^8 ->x^165.x^16 * x^16 ->x^326....原创 2018-04-13 22:41:49 · 231 阅读 · 0 评论 -
TYVJ 1541&&洛谷P379 八数码问题
一个比较经典的题,相信小伙伴们都玩过九宫格八个块的拼图游戏,这道题可以看成是这个游戏的抽象化,每个拼图块抽象成一个数字,求还原拼图,即将9个数字复位的最小步数,这道题给的初始状态,即要还原的状态是“123/804/765”,我在这里先讲最简单的一个算法IDA*,看到网上大佬们用双向搜hash判重,set判重等等等等,身为小蒟蒻的我,瑟瑟发抖,然而我这道题IDA*完美水过,下面讲思路第一步,准备...原创 2018-04-12 23:24:34 · 336 阅读 · 0 评论