摘要: [2015年NOIP提高组] 跳石头 思路:本题是最大化最小值问题,考虑二分答案解决。 先写函数确定距离,然后看要搬的石头数满足题意吗。距离确定了,把间距小于确定距离的需要全部搬走。 然后向左或向右再找更小或大的距离,输出就可以了。 代码如下: #include<iostream> using na 阅读全文
posted @ 2022-08-22 14:29 shanyingrui 阅读(89) 评论(0) 推荐(0) 编辑
摘要: [2001年NOIP提高组] 一元三次方程求解 思路:先在范围内枚举每一种可能,如果直接枚举到根就输出;否则确定区间,找根。 在找根时,运用了二分,分别从左右找。 代码如下: #include<iostream> #include<cstring> #include<cstdio> using na 阅读全文
posted @ 2022-08-22 10:30 shanyingrui 阅读(75) 评论(0) 推荐(0) 编辑
摘要: [2008年NOIP普及组] 排座椅 思路:首先运用结构体存入每行每列的具体信息,读入 m行n列 k条横向l条纵向通道 d对同学说话, 按顺序为每行每列编号。再一对一对地拆说话的同学(要计数),根据需求度排序,最后输出k行 l列。 代码如下: #include<iostream> #include< 阅读全文
posted @ 2022-08-21 18:15 shanyingrui 阅读(345) 评论(0) 推荐(0) 编辑
摘要: [2013年NOIP提高组] 积木大赛 思路:每次输入一个数时,将它的高度与前一个数的高度作比较。若比前面的大,操作步数就加上他们的差值,最后输出总步数。 代码如下: #include<iostream> #include<algorithm> #include<cmath> using names 阅读全文
posted @ 2022-08-16 20:31 shanyingrui 阅读(63) 评论(0) 推荐(0) 编辑
摘要: [2010年NOIP普及组] 接水问题 思路:用贪心算法。分为两种情况,第一种是水龙头数多,一次就能都打完,直接输出用时最长的即可;第二种是人数多,需要一个接一个的接水,所以每次都要找出能先打完的水龙头,让后面的人接上,最后找出用时最长的水龙头。 (还要写两个函数,一个找数最大的,另一个找最小的) 阅读全文
posted @ 2022-08-16 20:26 shanyingrui 阅读(222) 评论(0) 推荐(0) 编辑
摘要: [2007年NOIP普及组] 纪念品分组 思路:运用贪心算法。将纪念品按价格排序,然后一前一后两两组队,如果没有超过上限w,就组队成功;反之,就失败,较大的一个单独成一组,较小的再等别的来组队。最后输出总队数。 代码如下: #include<bits/stdc++.h> using namespac 阅读全文
posted @ 2022-08-16 11:45 shanyingrui 阅读(335) 评论(0) 推荐(0) 编辑
摘要: [2002年NOIP提高组] 均分纸牌 思路:贪心算法。将n堆纸牌的平均数算出来,将每堆纸牌i与平均数的差值转到i+1堆纸牌上,每操作一步,计数器+1。最后输出操作步数就好。 代码如下: #include<iostream> using namespace std; int a[10010]; in 阅读全文
posted @ 2022-08-16 11:39 shanyingrui 阅读(46) 评论(0) 推荐(0) 编辑
摘要: [2013年NOIP提高组] 积木大赛 思路:只需要进行n次循环,(两个数之间,如果后面的数大于前面的)用后面的数-前面的差值累加,就能得出操作次数啦~ 代码如下: #include<iostream> #include<cmath> using namespace std; int main() 阅读全文
posted @ 2022-08-15 21:49 shanyingrui 阅读(36) 评论(0) 推荐(0) 编辑
摘要: [2004年NOIP普及组] FBI树 思路:运用递归。已知“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 写一个后序遍历的函数,然后递归,自己调用自己就好了。每次输出根节点,直至全部输出。 代码如下: #include<bits/s 阅读全文
posted @ 2022-08-15 21:23 shanyingrui 阅读(105) 评论(0) 推荐(0) 编辑
摘要: [2001年NOIP普及组] 求先序排列 思路:递归分治,找到根节点之后把左右子树分开再递归。写一个递归函数,参数为树分别在序列中的下标位置midL,midR,lterL,lterR,在中序中和在后序中。 直接拜访后序最后一个下标根节点的位置,在中序中找到这个根节点pRoot的位置,再分成左右子树, 阅读全文
posted @ 2022-08-15 11:43 shanyingrui 阅读(36) 评论(0) 推荐(0) 编辑