08 2022 档案

摘要:营救 分析:根据题意,BFS具有求最短路径的特点,就是套用BFS的模板,在if语句判断时不越界,没被标记,是海洋(船只能走海洋),还有就是每走一步步数增加1,从营救船所在的位置开始,到遇难船所在的位置结束。 #include<iostream> #include<cstring> #include< 阅读全文
posted @ 2022-08-25 21:03 4lovls 阅读(90) 评论(0) 推荐(0) 编辑
摘要:面积 分析:根据题意,跟填涂颜色基本一样,就是要在矩形方阵的外面加一圈0,这样就避免了如果第一个就是1不搜索的情况,只要在判断是否越界时扩大一圈边界范围就行,在圈外面的所有0只要被搜索过就标记为1,在圈里面的0搜不到,这样到最后就只有圈里面的0和圈1还没有被标记,只需要开一个计数器,循环一遍标记数组 阅读全文
posted @ 2022-08-25 12:00 4lovls 阅读(165) 评论(0) 推荐(0) 编辑
摘要:广度优先搜索 BFS 概念:广度优先搜索是连通图的一种遍历策略,从一个顶点开始,辐射状的优先遍历其周围较广的区域。 模板: 阅读全文
posted @ 2022-08-24 21:23 4lovls 阅读(15) 评论(0) 推荐(0) 编辑
摘要:P1451 求细胞数量 分析:根据题意,不为0的数连在一起是一个细胞,就是用bfs进行搜索,先是让初始点进入队列,记录下队头的点并向他的上下左右搜索,在没有越界且是细胞(不为0)的情况下,对这个细胞进行标记(后面搜的时候就不搜他了,要不然没完),这一点进行完之后将产生的心点放入队尾,在最后输出的时候 阅读全文
posted @ 2022-08-24 19:47 4lovls 阅读(79) 评论(0) 推荐(0) 编辑
摘要:P1443 马的遍历 分析:根据题意,本题用bfs求解,马每次有八个方位的走向,将步数初始化为-1,这样如果没有马跳到这个地方就直接输出-1,使用队列先进先出的特点,在马每跳到一个方位后放到队尾,等待下一次跳马,其中要开结构体将矩阵图横纵坐标联系起来,每次在指定范围内跳完后更新点的位置并将步数+1。 阅读全文
posted @ 2022-08-24 17:17 4lovls 阅读(48) 评论(0) 推荐(0) 编辑
摘要:P1162 填涂颜色 分析:根据题意,将由1组成的闭合圈内的所有数字改为0。因为是一个正方形矩阵,所以需要设定四个方位,设一个标记数组,先复制一份原数(原来是1就自动标记为1),从4个边缘开始找0,搜索过程中0标记为-1,然后在限定范围内进行搜索,如果遇到已标记的数,证明是1 撞到墙了或者已搜过了, 阅读全文
posted @ 2022-08-24 14:41 4lovls 阅读(61) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索 dfs 概念: 从一个点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念就是深度优先。 模板: 阅读全文
posted @ 2022-08-23 21:21 4lovls 阅读(16) 评论(0) 推荐(0) 编辑
摘要:[2004年NOIP普及组] 火星人 分析:根据题意,要在题中给出的排列组合的基础上,加上m,形成一个新的排列组合。因为全排列是按照从小到大的顺序进行的,所以我们可以转化为全排列问题,m是几就代表进行几次全排列,所以进行m次全排列后的数就是题目中要求的数。在这里有一个全排列函数next_permut 阅读全文
posted @ 2022-08-23 21:02 4lovls 阅读(43) 评论(0) 推荐(0) 编辑
摘要:[2001年NOIP提高组] 数的划分 分析:根据题意,一个数按要求的组数划分,也就是求这个数被拆解成规定组数有几种可能,为了确保出现过的方案不再重复,可以规定在后面分组中的数必须大于前面分组中的数,x代表上一个出现的数,初始值为1(也就是从1开始循环),以此类推便可达成上述方案,s代表还需要递归多 阅读全文
posted @ 2022-08-23 18:46 4lovls 阅读(49) 评论(0) 推荐(0) 编辑
摘要:[2002年NOIP普及组] 选数 分析:根据题意,在所给的四个数中选择三个数相加,看看其中的和有几个是素数,用递归求出所有的可能性,在求的时候要写好递归终止的条件,然后单独写一个判断素数的函数,如果是素数满足要求的数就+1,输出有几个满足要求的数。 #include<iostream> #incl 阅读全文
posted @ 2022-08-23 16:58 4lovls 阅读(55) 评论(0) 推荐(0) 编辑
摘要:N 皇后问题 分析:根据题意,用dfs求解,在一个皇后放置后,他所在的列和两个对角线都要被标记,而他所在的行在占领后就不会再被遍历,在列和对角线都没有被标记时,证明这个位置可以放置皇后,就在这个位置放置皇后然后标记他的列和对角线,递归结束的标志是n个皇后放置完毕,输出n个皇后所在的列号。 #incl 阅读全文
posted @ 2022-08-23 15:37 4lovls 阅读(18) 评论(0) 推荐(0) 编辑
摘要:全排列问题 分析:根据题意,要求输出数字的所有排列组合,最主要的是写一个dfs函数。在函数中要规定循环结束的条件,也就是所有的数排列完成,然后再按照题意输出,在循环中如果这个数没有被标记(提前设了一个标记数组)说明这个排列组合还没有出现过,就保存下现在的数,将他标记,然后进行下一轮递归,回溯时清空标 阅读全文
posted @ 2022-08-23 11:42 4lovls 阅读(16) 评论(0) 推荐(0) 编辑
摘要:P1577 切绳子 分析:根据题意,与木材加工的题意一样,唯一的不同是这个要精确到小数点后两位,利用双精度浮点数的二分查找。在此我们可以先将输入的双精度浮点数扩大一百倍转化成整数来计算,在最后输出的时候再除以100.0转化为浮点数输出。 #include<iostream>#include<cstd 阅读全文
posted @ 2022-08-22 20:40 4lovls 阅读(52) 评论(0) 推荐(0) 编辑
摘要:P2440 木材加工 分析:根据题意,先对所有的木材长度进行排序方便二分查找,写一个查找函数,每个木材都除以当前的切割长度(mid),看能切出几段,如果切出的段数大于要求的段数,证明查找失败,在主程序内的mid(也就是当前的切割长度)就要将范围缩小一半,如果得出的段数少于给定段数,范围就反向缩小一半 阅读全文
posted @ 2022-08-22 17:19 4lovls 阅读(105) 评论(0) 推荐(0) 编辑
摘要:[2015年NOIP提高组] 跳石头 分析:根据题意,通过二分查找确定答案,左右各设变量方便查找中间值,遍历所有石头与当前的指定最短跳跃距离进行比较,如果两石头间的距离小了就要移走当前的石头,距离大了就不需要移走石头,继续往下判断,以此类推,如果最后要移走的石头数目不符合题意,则进行下一次二分,直到 阅读全文
posted @ 2022-08-22 10:19 4lovls 阅读(39) 评论(0) 推荐(0) 编辑
摘要:[2004年NOIP提高组] 合并果子 分析:根据题意,最先合并的果子加的次数最多,所以在每次合并时都要选取最小的两个进行,这就用到了排序算法,一开始给所有的果子从小到大排序,这里使用了快速排序,然后在每一次合并完最小的两个后,将合并完的数与剩余的数进行比较,在这里用1次冒泡,效率是最高的,在每次合 阅读全文
posted @ 2022-08-17 10:33 4lovls 阅读(69) 评论(0) 推荐(0) 编辑
摘要:[2010年NOIP普及组] 接水问题 分析:根据题意,要输出所用时间最长的那个人(包括那个人在等待的时间),分为两种情况,第一种是水龙头多于要打水的人数,这种情况下就可以直接写一个比较函数输出最大的人打水所用的时间,另一种是水龙头少于要打水的人,这种情况就要写一个函数比较哪个打水的人用的时间最少, 阅读全文
posted @ 2022-08-16 19:08 4lovls 阅读(170) 评论(0) 推荐(0) 编辑
摘要:[2007年NOIP普及组] 纪念品分组 分析:根据题意,需要给纪念品分组,有几个限定条件,每组纪念品不能大于两个,纪念品价格相加之和不能超过上限,所以,先给纪念品的价格排个序,设两个变量,分别指向最左边的纪念品和最右边的纪念品,最左边和最右边相加,如果价格超过上限,就将指向最右边的变量往前移,同时 阅读全文
posted @ 2022-08-16 11:02 4lovls 阅读(42) 评论(0) 推荐(0) 编辑
摘要:[2002年NOIP提高组] 均分纸牌 分析:根据题意,先求所有数字的平均数,然后遍历数字与平均数比较,如果大于平均数,那么后一堆纸牌加上前一堆纸牌多出来的,同时步数+1,反之如果小于平均数,就用后一堆纸牌减去前一堆纸牌少的部分,步数+1,最后输出步数。 #include<iostream>#inc 阅读全文
posted @ 2022-08-16 10:10 4lovls 阅读(22) 评论(0) 推荐(0) 编辑
摘要:[2007年NOIP普及组] Hanoi双塔问题 分析:根据题意,这是一个运用递推解决的问题,最关键的是找到递推式,先看汉诺单塔我们会发现规律为2^n-1,那么汉诺双塔就是在此基础上乘2,也就是2^(n+1)-2,找到规律后,还有一个需要我们注意的点是这道题范围,通过n=200我们可知要用高精度来计 阅读全文
posted @ 2022-08-15 17:31 4lovls 阅读(247) 评论(0) 推荐(0) 编辑
摘要:[2013年NOIP提高组] 积木大赛 分析:根据题意,挨个输入每次的高度,在每个输入时就与上一个的高度进行比较,如果大于上一个的高度,次数就需要增加,高度大几次数就增加几,最后将现在的高度变成上一个,再输入新的高度成为现在的高度,以此类推。 #include<iostream>#include<c 阅读全文
posted @ 2022-08-15 15:11 4lovls 阅读(45) 评论(0) 推荐(0) 编辑
摘要:[2004年NOIP普及组] FBI树 分析:根据题意,根据01字符构建树,然后根据01字符所代表的字母后序遍历输出,首先是在长度只有1时看所对应的字母是哪个,然后就是长度不为1时,使用截取字符函数(substr)分别截取前半部分和后半部分,然后进行递归,最后是跟据题意输出(只是将原本的数字换成了有 阅读全文
posted @ 2022-08-15 11:36 4lovls 阅读(50) 评论(0) 推荐(0) 编辑
摘要:2001年NOIP普及组] 求先序排列 分析:根据题意,已知中序遍历和后序遍历求先序遍历,很显然是用递归求解。我们知道后序遍历中根节点是最后一个,所以可以首先确定根节点的位置,然后通过根节点找中序遍历中的根节点,根据中序遍历就可以确定左子树和右子树节点的个数,再看是否有左子树和右子树,如果有用递归继 阅读全文
posted @ 2022-08-15 08:06 4lovls 阅读(164) 评论(0) 推荐(0) 编辑
摘要:[2001年NOIP普及组] 数的计算 分析:根据题意,本题应用了递推,最重要的一点是找到相邻数据间的关系(递推式),在给出的n中,n/2得到的是他前一个数据(可能不止是前一个数据),前一个数包含的是他本身所符合题意的数的数量,再根据他前一个数据得到,再往前一个数据,就这样每轮都会叠加,从而得到递推 阅读全文
posted @ 2022-08-14 21:17 4lovls 阅读(52) 评论(0) 推荐(0) 编辑
摘要:[2000年NOIP普及组] 税收与补贴问题 分析:根据题意,在销量随售价改变的基础上求最小的补贴或税收,本题用了打表的方式来展现售价与销量之间的关系,其中出现了几个与普遍的规律不相同的组合,对于特例我们就要进行单独考虑,在打完表后,根据利润=(售价-进价+补贴)*销量 或者 利润=(售价-进价-税 阅读全文
posted @ 2022-08-14 19:57 4lovls 阅读(124) 评论(0) 推荐(0) 编辑
摘要:[2016年NOIP普及组] 回文日期 分析:根据题意,有一个由年月日组成的八位数,判断是否是回文日期,因为每个月的天数是不一样的,所以可以开一个数组来存每个月的天数,此时有一个特殊的闰年二月29天,经过分析可知它的存在不影响回文日期的多少。本题思路为用两个for循环分别限制有多少天和多少月,然后将 阅读全文
posted @ 2022-08-14 19:39 4lovls 阅读(203) 评论(0) 推荐(0) 编辑
摘要:P1008 [NOIP1998 普及组] 三连击 分析:根据题意,有1-9这9个数要分成三组组成三个三位数,意味着这9个数只能出现一次,且三个三位数的比例为1:2:3,由此可以得知这三个数中最小的那个数一定大于100小于333,我们可以写一个函数,设一个标记数组看是否出现重复的数字和0,如果出现就不 阅读全文
posted @ 2022-08-14 19:25 4lovls 阅读(231) 评论(0) 推荐(0) 编辑
摘要:[NOIP2001 提高组] 一元三次方程求解 分析:由题意得,本题要求的是一元三次方程等于0时的三个根,由图像我们可知等于0时的根左右两侧的点的纵坐标乘积(也就是根)为负数,因为题目说要精确到小数点后两位,所以在for循环中i+=0.001,再定义一个j为所求点另一侧的点的横坐标,用x1,x2表示 阅读全文
posted @ 2022-08-14 19:07 4lovls 阅读(151) 评论(0) 推荐(0) 编辑
摘要:[2011年NOIP提高组] 铺地毯 分析:根据题意,用for循环n张地毯,用if语句判断题目给出的点是否在地毯范围内(地毯左下角的坐标到加上地毯长度后的坐标就是整个地毯的范围),如果在sum就等于这张地毯的序号,如果没有地毯覆盖此点,也是输出sum(因为一开始就定义的sum=-1)。 #inclu 阅读全文
posted @ 2022-08-14 11:38 4lovls 阅读(17) 评论(0) 推荐(0) 编辑
摘要:[2001年NOIP普及组] 最大公约数和最小公倍数问题 分析:根据题意,求最大公约数和最小公倍数,其中有一个点是两数乘积等于两数的最大公约数乘最小公倍数。知道这一点后,用for循环遍历从x到y的数(没有符合条件的数比最小公倍数最小,比最大公约数大),由前文说的点可以用i来表示出j,作为我们找的两个 阅读全文
posted @ 2022-08-14 11:27 4lovls 阅读(234) 评论(0) 推荐(0) 编辑
摘要:[2008年NOIP普及组] 排座椅 分析:根据题意,定义结构体将行列序号和需求度联系起来,最重要的是想到需求度,当纵坐标相等时,两个点就是挨着的,就比较两者的横坐标哪个小,横坐标小的那个点需求度加一,反之同理。然后先根据需求度排序,再根据横纵坐标序号排序,最后输出有需求度的序号。 #include 阅读全文
posted @ 2022-08-13 17:35 4lovls 阅读(148) 评论(0) 推荐(0) 编辑
摘要:[2011年NOIP普及组] 瑞士轮 分析:根据题意,定义结构体,将选手的序号,初始分数,实力值联系起来,在最开始先给数据排个序,跟据题意手打排序。在此我们要注意一个问题,我们已经按照分数排成有序的,那么前面的人分数一定比后面的人高,赢的人都+1,所以每次先赢的人总会在后赢的人前面,输的相同,因此我 阅读全文
posted @ 2022-08-13 15:53 4lovls 阅读(87) 评论(0) 推荐(0) 编辑
摘要:[2009年NOIP普及组] 分数线划定 分析:根据题意,定义结构体将序号与成绩联系起来,这时sort函数排序不符合题意,需根据题意手打排序,根据题目给出的条件求人数和分数线,还需注意的一点是,如果有人的成绩等于分数线,那么也把他算进人数中,需要加个for循环过一遍入围人选,再用if语句判断即可。 阅读全文
posted @ 2022-08-13 11:22 4lovls 阅读(188) 评论(0) 推荐(0) 编辑
摘要:1. [2006年NOIP普及组] 明明的随机数 l 分析:根据题意,设置一个标记数组和一个计数器,用for语句将数过一遍,将第一次出现的数标记为一,计数器加一,输出计数器就是不同随机数的个数,再用for语句将指定范围内的数过一遍,将其中已标记的数输出。 1 #include<cstdio> 2 # 阅读全文
posted @ 2022-08-12 21:20 4lovls 阅读(42) 评论(0) 推荐(0) 编辑
摘要:3.[2007年NOIP普及组] 奖学金 l 分析:根据题意,定义结构体,学号与成绩联系起来,在sort函数的基础上根据题意写一个排序函数(主要是if的应用),最后输出前五名。 l #include<cstdio> #include<iostream> #include<algorithm> usi 阅读全文
posted @ 2022-08-12 21:20 4lovls 阅读(136) 评论(0) 推荐(0) 编辑
摘要:8.[2016年NOIP普及组] 买铅笔 l 分析:根据题意,用for语句把三行过一遍,如果n取余某个数量不为零,证明要买多一套(即超过n数量的笔),为0就是刚好等于n数量。开一个min变量,来比较出花费费用最少的一种。 l #include<iostream> #include<cstdio> u 阅读全文
posted @ 2022-08-12 09:36 4lovls 阅读(56) 评论(0) 推荐(0) 编辑
摘要:7.[2015年NOIP普及组] 扫雷游戏 l 分析:根据题意,开一个数组记录是否是雷,是雷就标记为一,如果不是雷,那么他的八个方位全加起来,有雷的方位就会+1,这样最后结果就是他周围雷的数量。 l #include<iostream> #include<cstdio> #include<cstri 阅读全文
posted @ 2022-08-12 09:35 4lovls 阅读(76) 评论(0) 推荐(0) 编辑
摘要:6. [2015年NOIP普及组] 金币 l 分析:根据题意,设i作为每次的累加值,day是通过i统计的天数,且可发现规律为金币数量是i值的平方。而有种情况是在day还没有到指定的k值,且day加上下一个i值就超过指定k,此时金币数会因此超出,只需要用day-k算出超出了几天,乘当时的i就可,而当前 阅读全文
posted @ 2022-08-12 09:34 4lovls 阅读(68) 评论(0) 推荐(0) 编辑
摘要:5.[2010年NOIP普及组] 数字统计 l 分析:根据题意,用for语句把所有数过一遍,每个数各个数位用整除和取余进行判断是不是2 l #include<iostream> #include<cstdio> using namespace std; int main() { int l,r,s= 阅读全文
posted @ 2022-08-12 09:33 4lovls 阅读(34) 评论(0) 推荐(0) 编辑
摘要:4.[2003年NOIP普及组] 乒乓球 l 分析:根据题意,在11分制时,用for语句过一遍数据并对数据进行分类,如果有数据符合11分制的题意就输出这组比分,将统计的变量清零继续进行,直到遇到E为止,最后将最后一组还没到要求的比分输出。21分制同上。 l #include<iostream> #i 阅读全文
posted @ 2022-08-12 09:32 4lovls 阅读(60) 评论(0) 推荐(0) 编辑
摘要:3.[2004年NOIP提高组] 津津的储蓄计划 l 分析:根据题意,用for语句跑一遍一到十二月,for内部根据题意编写(主要是运算符的应用) l #include<iostream> #include<cstdio> using namespace std; int main() { int a 阅读全文
posted @ 2022-08-12 09:31 4lovls 阅读(44) 评论(0) 推荐(0) 编辑
摘要:2.[2005年NOIP普及组] 陶陶摘苹果 l 分析:根据题意,使用if语句判断陶陶是否能够到苹果(有个30cm高的板凳),用for语句将所有数挨个比较 l #include<iostream> #include<cstdio> using namespace std; int main() { 阅读全文
posted @ 2022-08-12 09:30 4lovls 阅读(55) 评论(0) 推荐(0) 编辑
摘要:1.一本通 例2.17 分糖果 l 分析:将五种情况一一列出来,每种在自身除以3的基础上,给左右两边加上除以三后得到的数 l #include<iostream> #include<cstdio> using namespace std; int main() { int a,b,c,d,e; ci 阅读全文
posted @ 2022-08-12 09:28 4lovls 阅读(19) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示