寒假集训专题一 搜索
2022寒假集训
斐林试剂捏
这个作者很懒,什么都没留下…
展开
-
【搜索】训练题J-Maximum Product
题意给了n个数字,要求就是求出这组数按顺序相乘的最大值,如果结果不是正整数,那么答案为0思路枚举每一个点,计算往后相乘的结果,并且维护一个数字max,当相乘的结果ans大于max的时候,将ans的值赋给max。本题需要注意的是每个case结束之后要空一行代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#incl原创 2022-01-24 12:18:22 · 58 阅读 · 0 评论 -
【搜索】训练题M - Protect Sheep
题意一个棋盘,有sheep和wolf,要求是判断是否可以通过放置dog来保护sheep。思路其实只需要判断wolf上下左右是否有sheep或者sheep上下左右是否有wolf即可,因为不要求放置的dog的数量,最简单的方法就是用dog把棋盘铺满就可以代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#includ原创 2022-01-24 12:12:59 · 137 阅读 · 0 评论 -
【搜索】训练题J-山峰和山谷 Ridges and Valleys
题意棋盘每个数字表示高度,四周高中间低为山谷,反之为山峰,要求统计山峰和山谷的数量思路枚举每个点,对每个点进行对8个方向跑bfs,判断该方块周围的高度情况。代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include原创 2022-01-24 12:07:48 · 100 阅读 · 0 评论 -
【搜索】训练题H-Prime Ring Problem
题意从1到n排成一个环,要求是相邻两个数的和为素数思路对每个数dfs,符合要求就存在num数组中,如果数组最后一位+1也为素数,则符合要求,输出。代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<c原创 2022-01-24 12:03:09 · 67 阅读 · 0 评论 -
【搜索】训练E - Crazy Robot
题意就是一个棋盘 有一个crazy robot ,对它下指令,robot就会朝非指令方向移动,同时robot无法越界和穿越障碍物,要求就是找出可以通过下指令使robot回到L的位置 并打上+标记思路因为下指令之后robot会往除了该方向以外的其他地方走,本质上相当于加了一堵墙,那么要让robot能回到L的话就需要满足条件:小于等于两条路可以走,且有一条通向L。而满足该条件的点,又可以当作新的L。所以考虑到用dfs。除此之外,通过另写一个函数wall来判断robot在该点周围的墙数会方便很多~原创 2022-01-24 00:41:37 · 137 阅读 · 0 评论 -
【搜索】训练题C - Computer Game
题意给出两行,判断是否能(1,1)走到(2,n)思路由于只需要判断是否能走的到就可以了,实际上,只要去的路上没有被完全“堵住”,都可以到达右下角代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<cs原创 2022-01-24 00:16:59 · 224 阅读 · 0 评论 -
【搜索】训练题B - Knight Moves
题意计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数思路一道bfs,比较贴合模板的那种,就是一直广搜到与目标坐标相等之后把step返回就好代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<c原创 2022-01-24 00:11:22 · 68 阅读 · 0 评论 -
【搜索】测试题E-魔板
题意一个二维的“魔方”,给出三种变化方式,求从基础状态(12345678)到目标状态的操作数以及操作方法思路可以把每次变换形成的状态当成一个点,找出从一开始基础状态到目标状态所需要的最小的步数首先是三种状态变化的函数,(ps刚开始没写对就是因为变换的函数居然写错了)。要注意的地方是,读数的方法是是顺时针数的,以及可以使用substr()函数。其次的话,用map来记录访问的状态,对字符串做ABC三种变换,直至与目标字符串相等即可代码#include<iostream..原创 2022-01-23 20:20:55 · 60 阅读 · 0 评论 -
【搜索】训练题D - 驾驶卡丁车
前言我写模拟题一向是非常忐忑的(之前的代码一直没找出问题,重构了一次之后还是WA了(最后发现两个代码错的地方都是判断边界出了问题(默认行列相等了....))题意一道模拟题。思路害怕错误的话其实多写几个分函数是不错的选择(几个需要注意(我犯错了的)地方是:1.行列是不相等,判断边界的时候一个是x<=n 一个是y<=m2.每次撞完之后 速度都要改为03.不要把dir数组的行列写反了(代码#include<iostream>#incl原创 2022-01-23 23:20:29 · 85 阅读 · 0 评论