
NOIP详细(良心)题解
cgg用最易懂的语言为你讲解NOIP普及组和提高组的题目。
cggwz
这个作者很懒,什么都没留下…
展开
-
洛谷题解——统计单词个数(NOIP)
传送门好久每写题了,接下来会多写些题的。这道题是典型的动态规划。大致上的思路是,先预处理出num[i][j]表示在区间[i,j]上有多少符合题意的单词。然后用f[l][part]表示把前l个字符分成part部分,最大的单词数是多少。然后我们就可以写出状态转移方程:f[l][part]=max{f[j][part-1]+num[j+1][l]}代码如下:#include<cstd...原创 2019-12-24 17:58:54 · 393 阅读 · 1 评论 -
螺旋矩阵(NOIP2014)
螺旋矩阵大致思路:O(1),手动计算,数学题,分四个边算出公式,代值即可。代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,x,y;int main(){ scanf("%d%d%d",&n,&x,&y)...原创 2018-10-30 20:38:25 · 627 阅读 · 0 评论 -
引水入城(NOIP2010提高组)
黑子传送服务首先bfs记录那些点可达,然后判断是否可以完全覆盖,如果不可以,统计一下没有覆盖的点的数量输出。如果可以,有两条性质,第一,每一个河边城市可以到达的干旱城市一定是连续的,第二,对于每一个河边城市能到达的干旱城市区间,他们的区间首段是有序的,即从左到右递增。所以我们在之前的bfs中要记录每个点可达的河边城市左右端点,然后用贪心进行区间覆盖问题即可。代码如下:#include&l...原创 2018-10-20 14:31:02 · 254 阅读 · 0 评论 -
细胞分裂(NOIP2009普及组)
传送门素数分解,简单数论但是要细心代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m1,m2;int ans,t,num;int maxu;int prime[30001];void div(){ memset(prim...原创 2018-10-18 21:15:19 · 995 阅读 · 0 评论 -
过河(NOIP2005)
纱雾小屋妖精老师的水晶城堡你真信了? 算了吧!第一个是洛谷,第二个是vijos知识点离散化其实这个是很主要的,至于楼下的那一个……没有什么可看的。动态规划如楼上所言,这一题中的动态规划很水!基本思路对石头坐标排序 离散化并对石头对应位置打标记 动态规划详细解释对石头坐标排序题目没说读入时是有序的,所以我们要先排序,便于离...原创 2018-08-24 22:32:50 · 783 阅读 · 2 评论 -
飞扬的小鸟(NOIP2014)
御坂美琴超电磁炮洛谷传送服务白井黑子vijos传送服务不能让老婆累着了,所以把另一个交给黑子。 秀老婆!!秀老婆!!(第二个不是) 知识点动态规划动态规划、滚动数组基本思路用f[i%2][j]表示到达第i列高度为j的点最少需要跳几次 读入,记录柱子 以横坐标为枚举对象,开始递推 初始化下一列的数组(因为用的是滚动数组) 枚举当前列可达的点 ...原创 2018-08-24 21:43:00 · 510 阅读 · 0 评论 -
神经网络(NOIP2003)
美琴大人超电磁炮传送(洛谷)美琴大人超电磁炮传送(vijos)(没错,就是炮姐的超电磁炮,是不是酸爽十足?) 秀老婆!知识点图论邻接矩阵、bfs乱搞基本思路邻接矩阵存图 bfs 输出详细解释邻接矩阵存图这是读入的时候干的,好像没什么要讲的。bfs这是比较关键的一步。 首先,我们扫描出输入点,并把他们扔进队列...原创 2018-08-22 21:53:32 · 523 阅读 · 0 评论 -
Car的旅行路线(NOIP2001)
这里写链接内容这里写链接内容今天,是个重大一天,因为从今天起,为了大家有更好的体验,我将对我的题解进行全新改版!! (不满的lovechq:你不就还有5天就去备战高考了吗?现在改版有啥用? 来自cgg的答复:虽然,在过几天,我会和大家依依不舍地道别,因为我真的要去备战高考了,但是明年暑假我会强势回归的!请各位放心)知识点(cgg解释:这里是为了让大家看到此题涉及的知识点,可...原创 2018-08-21 22:30:24 · 576 阅读 · 0 评论 -
潜伏者(NOIP2009)
威廉同志的暴走 (就是我们敬爱的威廉·克梅修同志经常使用的暴走能力,虽然没有白井和女仆的快,将就一下吧!) 这除了是一道水题,就是一道水题。 直接模拟就好了。 不过注意,对于法则2,是密文和明文一一对应,不是单射或满射。 代码如下:#include<cstdio>#include<algorithm>#include<cstring>us...原创 2018-08-21 20:37:43 · 526 阅读 · 0 评论 -
愤怒的小鸟(NOIP2016)
teleport 白井黑子空间移动专属传送服务! 好了我们来看今天的题。 我当年也参加了这场比赛,但是,当时的我是作为一个蒟蒻去参加的,所以这一题……连部分分都没做。 这道题其实难度适中。 看到这个猪的数量,也就知道要用状压了。 而且我们可以发现,当前状态可以由被打掉的猪的集合唯一确定。 因为我们已经打掉哪些猪,对我们未来再打猪是没有影响的。 有人可能会问:如果未来要打的猪有的...原创 2018-08-19 21:49:24 · 455 阅读 · 0 评论 -
蚯蚓(NOIP2016)
传送女仆 (???女仆专属服务) 这道题,写的难度并不大。 至于难不难想,呵呵,我已经忘了。 我们手写三个队列。 第一个用于存放没有切过的蚯蚓。 第二个用于存放被切过的较长的半个蚯蚓。 第三个用于存放被切过的较短的半个蚯蚓。 我们做的时候,先把第一个排一下序,然后就以时间为遍历对象。 然后每次取出一个最大的,然后切过后在放入第二个和第三个。 那么怎么取最大的? 取三个队列...原创 2018-08-18 21:57:26 · 516 阅读 · 0 评论 -
寻找道路(NOIP2014)
洛谷传送法阵 vijos传送药水 为什么要加一个vijos? 因为今晚洛谷太卡了,所以在vijos上提交了。 但是后来洛谷也评测结束了,所以我就两个都放了。 这道题,我提供一个非常丑的做法。 那就是bfs! 跑三遍bfs就行。 我们存图的时候,存反向边,这一点到后面就知道有什么用了。 我们来看看三遍bfs。 第一遍,从终点开始跑一遍裸的bfs,记录那些点得以访问。 第二遍,我...原创 2018-08-18 21:20:33 · 279 阅读 · 0 评论 -
转圈游戏(NOIP2013)
传送门 这个这个…… 写个取余的快速幂就好了。 代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,k,x;long long pow_mod(long long x, long long n, long long mod...原创 2018-08-17 21:30:50 · 504 阅读 · 0 评论 -
积木大赛(NOIP2013)
传送门 别看这一题比较水,但还是要动动脑子的。 事实上,我们只需要关注峰值就可以了。 为什么? 因为对于非峰值的高度,我们在搭建他附近的峰值的时候,可以顺便把他处理掉。 所以峰值很关键。 那么我们怎么计算呢? 先找出峰值,再计算? 没必要。 我们利用差分数组的思想就好了。 如果当前的这个高度比前面一个高度高,那么我们把答案加上他们的高度差即可。 如果他是峰值,那正好;如果不是...原创 2018-08-17 21:39:21 · 286 阅读 · 0 评论 -
火柴排队(NOIP2913)
传送法阵 (老是放传送门,都用腻了,换一个) 这道题,想通了就不难。 其实主要就是数学分析。 我们来对目标式进行化简: ∑(a-b)²=∑(a²-2ab+b²)这里用了完全平方公式(应该是这个吧!) 那么我们知道对a/b的平方求和是一个定值。 所以我们要关注的就是∑(-2ab),我们要求它的最小值,也就是求∑(ab)的最大值(前面有个负号)。 那么什么时候最大呢? 我...原创 2018-08-17 22:02:24 · 286 阅读 · 0 评论 -
火车运输(NOIP2013)
传送药水 (喝了这一壶传送药水,保你看了什么题都觉得神清气爽) 这题不算水。 首先想到,肯定需要跑一遍最大生成树,因为我们需要尽可能大的限制。 那么,接下来就是求两点之间最小限制。 那么就是我们就可以用求LCA(最近公共祖先)来解决这个问题。 所以就倍增好了。 我们这里倍增的有两个数组,一个是祖先,另一个是当前点到祖先的路上的最小限制。 最后理一遍思路: 先kruskal建立一个...原创 2018-08-17 22:17:59 · 356 阅读 · 0 评论 -
选择客栈(NOIP2011)
NOIP2011提高组day2T2原创 2018-08-15 22:12:51 · 262 阅读 · 0 评论 -
借教室(NOIP2012)
传送门 乍一看,就像个线段树。 仔细一看,没错,就是线段树。 但是联赛一般不会考线段树的裸题,所以线段树应该不能拿满分。 于是,写了写。 得到了95分。(可能是数据比较水吧) 关于线段树可以参考:线段树#include&lt;cstdio&gt;#include&lt;cstring&gt; #include&lt;algorithm&gt;using namespace s...原创 2018-08-17 21:13:33 · 301 阅读 · 0 评论 -
信息传递(NOIP2015提高组)
传送门 这题显然是找长度最小的环。 怎么找? dfs呗 思路非常明晰,但是你也许只能得到80分。 因为我们还需要一点简单的优化。 我们每次遍历到某一个点,就把它的对象设置为0(没有), 这样的话,每次遍历,遍历到0,就返回。 代码如下:#include<cstdio>#include<cstring>#include<algorithm&g...原创 2018-08-06 21:28:27 · 304 阅读 · 0 评论 -
乌龟棋(NOIP2010)
NOIP2010提高组原创 2018-08-14 22:04:26 · 257 阅读 · 0 评论 -
计算系数(NOIP2011)
NOIP2011提高组day2T1原创 2018-08-14 22:18:33 · 275 阅读 · 0 评论 -
单词接龙(NOIP2000)
传送门 这道题很水。 直接搜索就好了。 写个函数去判断能不能接,就行了。 代码如下:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;char c[25][100];int vis[25];char sta[5];int an...原创 2018-08-01 22:15:50 · 697 阅读 · 0 评论 -
进制位(NOIP1998)
传送门 这道题,怎么说呢 说是搜索,我觉得不像,更像乱搞。 那么,我们就说一下乱搞的思路。 首先在读入的时候,我们需要确定两个数字,那就是0和1. 怎么确定? 0很好确定,每一位运算后都不变,那么这个数字就是0. 那么1呢? 我们只要有一个双位数,那么它的十位就是1. 接下来,找到1所在的那一行,有了0和1,就可以推出其他的数字。 最后,在顺着表判断每个格子对不对。 最后输出...原创 2018-07-30 22:47:56 · 352 阅读 · 0 评论 -
邮票面值设计(NOIP1999)
传送门 怎么讲呢? 挺有意思的 是一道dp和搜索的结合。 我们把数字从小到大依次枚举。 用dp去计算当前的所得最大值。 f[i]表示凑成i面值所需的最小邮票数量。 那么小于等于n的,都是可以凑出来的。 那么最大值也就好求了。 至于dp的上界,用几个数的和就能解决。 代码如下:#include<algorithm>#include<cstring>...原创 2018-07-31 22:02:06 · 888 阅读 · 0 评论 -
拼数(NOIP1998)
NOIP1998提高组 这题比较水 我们知道,高位数字对一个数的大小影响更大,所以我们要尽可能使放在前面的数位上的数字更大,比如343和313,4比1大,所以我们会把343放在前面 所以我们只需要对每个读入的数字进行数位拆分 然后对他们进行数位大小的排序,所用的法则就上上面讲的,这个排序算法要自己写 最后输出即可,排序时可以用一个数组记录他们的序号顺序即可 代码如下:#incl...原创 2018-07-25 19:49:13 · 631 阅读 · 0 评论 -
挖地雷(NOIP1996)
NOIP1996提高组这道题很水的 显然是个dp 题目似乎有个问题 他没有说边是单向的(如果说了,就当我眼瞎) 反正我一开始以为是双向的,结果被卡了一会 但是看清是单向的,还是简单的 用f[i]表示以i为终点的最大挖雷数 不讲了,感觉太简单了 自己看看代码吧!我是重来不浓缩代码的,应该很易懂 代码如下:#include<cstdio>#include&l...原创 2018-07-25 21:09:46 · 880 阅读 · 0 评论 -
棋盘问题(NOIP提高组1997)
传送门 相当古老的题了 一年前做这一题一直WA,今天简单看看就AC 感觉自己水平有所提高 没有,没有,还是很菜的 这道题洛谷给的标签高了,最多也就普及+ 下面步入正题 数据水得惊人,直接dfs即可 但是我们要注意dfs的顺序,因为它有一个要求,就是第一行和第一列之和最小 所以我们的顺序就是:先填第一行,再填第一列,然后把剩下的小矩阵按一行行从左到右的顺序填上即可 代码如下:...原创 2018-07-25 19:20:10 · 971 阅读 · 0 评论 -
Hankson的趣味题(NOIP2009)
题目链接:Hankson的趣味题 怎么讲呢?感觉这一题的难度给高了。 其实涉及的数学推理其实并不难,而且一旦数学推理结束,就是暴力枚举了,而且代码也短没什么难度。 所以我们就进行一下关键的数学分析。 我们要求x满足一下要求:(x,a0)=a1[x,b0]=b1括号是什么意思,大家应该知道。 我们不妨设:x=m*a1a0=a*a1b1=n*xb1=b*b0...原创 2018-07-16 22:58:35 · 333 阅读 · 0 评论 -
跳石头(NOIP2015)
题目链接:跳石头这题就是简单的二分答案。 具体怎么做呢? 何谓二分答案? 既然二分的是答案,我们就要以答案为对象,进行二分 这个答案就是最小距离 所以,我们需要做的就是,设置左右两个标签,然后求mid,然后判断实现这个mid需要移走几块石头,再和m比较。 下附代码:#include<cstdio>#include<cstring>#include...原创 2018-07-16 21:36:30 · 805 阅读 · 0 评论 -
货车运输(NOIP2013)
题目链接:货车运输 这道题其实思路很显然,就是最大生成树加倍增。 我们来顺着代码讲一遍。 我们先读入n和m 然后把所有边的权值设置为0 读入时,重复的边只取最大(很显然) 然后kruscal进行最大生成树,用G和H两个vector分别去保存边和权值 然后倍增即可。 具体看代码:#include<cstdio>#include<cstring>#i...原创 2018-07-16 20:34:20 · 388 阅读 · 0 评论 -
NOIP2017提高组day2T1题解(奶酪)
NOIP2017提高组day2T1,奶酪,一道有趣的题原创 2017-12-08 21:41:06 · 1281 阅读 · 0 评论 -
买铅笔(NOIP2016)
NOIP普及组第一题原创 2017-08-12 08:14:32 · 2385 阅读 · 0 评论 -
回文日期(NOIP2016)
NOIP普及组第二题原创 2017-08-12 11:38:59 · 1549 阅读 · 0 评论 -
金币(NOIP2015)
NOIP2015第一题原创 2017-08-12 23:27:15 · 3378 阅读 · 0 评论 -
神奇的幻方(NOIP2015)
NOIP2015水题第一题原创 2017-08-13 08:13:27 · 1930 阅读 · 0 评论 -
棋盘问题(NOIP1997)
NOIP1997第一题原创 2017-08-13 23:48:37 · 1085 阅读 · 0 评论 -
统计方形(NOIP1997)
NOIP1997第三题原创 2017-08-14 00:01:46 · 1283 阅读 · 1 评论 -
斐波那契数列(NOIP1997)
NOIP1997第四题原创 2017-08-14 19:17:25 · 610 阅读 · 0 评论 -
三连击(NOIP1998)
NOIP1998普及组第一题原创 2017-08-14 21:52:35 · 1398 阅读 · 0 评论 -
过河卒(NOIP2002)
NOIP2002普及组第一题原创 2017-08-15 21:40:11 · 898 阅读 · 0 评论