NOIP提高组完善程序题目分析
2015年
阅读程序写结果
1.白痴计算题:模拟
2.指针题:模拟
3.求最大字符串长度题:看算法
4.递归题:画树
完善程序
1.双子序列最大和
①审题析题:初步观测算法,是对经典算法的延伸拓展,只要类比到最大子段和,基本上本题的算法核心与总方针就八九不离十,本道题是及其特殊的一道——对经典算法的延伸
②看注释,猜算法:重点是对于数组作用的注释的观察,这道题看到注释基本明白,是要使用二次的最大子段和来进行求解,故对于理解算法有很大帮助
③看程序,找突破:从上一步可知,两端程序的结构应当是相似的,所以可以使用类比的方法把上一段程序与下一段程序进行对比,从而得出结论
④填空与模拟检验:注意,填完空之后要进行检验
2.最短路径问题
对于这种题型,是一种比较特殊的题型,其特点就是直接将算法披露给你,为我们省去了前两步的步骤,而注释也非常给力,基本算法核心写出。但是对于此题最怕的就是不知道,不了解题目中所给的算法。所以①对于算法要更广泛地接触②掌握算法实现能力,实质上这道初赛题已经面向复赛了,是十分有意义的。
2014年
阅读程序写结果
1.找三的倍数题:模拟
2.递归:画树
3.字符串名次数组冒泡排序:模拟,特殊算法
4.约瑟夫问题:模拟,特殊算法
完善程序
1.双栈模拟数组:
①审题析题:算法直接出:纯模拟
②看程序,找突破:其实本道题再稍微从程序中看看就明白,是在考察对于栈的操作,这也是一类题型:对于栈、队列等STL中的特殊数据结构操作的考察,基本上这一条基线定了,本题就解了
2.最大子矩阵和
①审题析题:①暴力搜索②动态规划——经典算法:最大字段和。
②看注释:关于rowsum的注释直接可以看出本题①有大概率采用动态规划②采用前缀数组,这是对于算法猜测与前两空的填空的基础
③看程序,找突破:程序要一分为二来看:①是预处理,②是解决问题
预处理基本上是前缀数组的处理,只要看懂注释都没问题。而解决问题实质上突破口就在循环上。循环实质上实在暴力枚举所有的列,而行的和则通过最大子段和的方法以及前缀数组搞定。所以本道题真正的算法是:半暴力半动态规划。搞明白这一点问题也迎刃而解。
2013年
阅读程序写结果
1.回文串:看输入
2.数学问题:公倍数公因数问题:画维恩图
3.特殊算法:最长不降子序列
4.广度有限搜索
完善程序:
1.新题型:多种算法选择题目。
内涵:对于算法优化的执着追求。
解题思路:
①解析算法:朴素,移动交换,指针(易从程序中看出)
②填空:多看注释,掌握指针的使用方法即可
2.两元序列
①审题析题:类比最大字段和算法。
②看注释,猜算法:采用模拟的算法,其中有动态规划的思想
③看程序,填空:分析因果逻辑:如果能继续,就继续增加,不能,看看是两元序列中的哪一个,继续发散。
思考:是否可能实现多元的序列呢?待求解。
总结方法:
一般来说阅读程序写结果就几类:
1.模拟 解决方案:模拟
2.递推 解决方案:模拟
3.递归 解决方案:画树
4.各种STL应用,以及对于指针等特殊数据结构的掌握
5.经典算法:约瑟夫,最长不降子序列,最大子段和。解决方案:直接出解
6.字符串处理 解决方案:模拟
7.简单动态规划 解决方案:推导问题是什么
8.简单数学模拟 解决方案:同上
注意可以观察程序的结构与输入数据来判断程序要干嘛
完善程序:
1.简单图论
2.简单动态规划
3.比较繁杂的模拟
解决方案:
步骤一:①审题析题:很重要,一定要在大脑中打底稿,搞清楚这道题的大概方向与算法可能性
②看注释,猜算法:实际上猜算法从题目和注释之中一定要得出结论,否则在接下来的做题填空中将一头雾水
③看程序,找突破:找到一个好的突破口是非常必要的,所以下笔的第一笔一定要慎重啊,一步错很可能导致步步错。
④造数据,回带验:重新模拟程序运行以得到正确结论也是十分重要的。
NOIP提高组完善程序题目分析相关推荐
- 2018年NOIP普及组完善程序题2—右侧第一个更大值
问题:右侧第一个更大值 对于一个1到n的排列P(即1到n中每一个数在P中出现了恰好一次),令qi为第i个位置之后第一个比Pi值更大的位置,如果不存在这样的位置,则qi = n+ 1.举例来说,如果n ...
- 津津的储蓄计划 NOIp提高组2004
这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...
- 第一届『Citric杯』NOIP提高组模拟赛 题解
[官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...
- 信息学奥赛一本通(C++版)NOIP提高组(1820-1829)
信息学奥赛一本通(C++版)NOIP提高组目录 //1820 [题目描述] 我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所 处位置的(值减1)为指数,以10为底数的幂之和的 ...
- NOIP 提高组 复赛 历年 试题
NOIP 提高组 复赛 历年 试题 NOIP 2017 提高组 复赛 试题 https://wenku.baidu.com/view/70de9e29854769eae009581b6bd97f ...
- {小结}2016.6.11【初中部 NOIP提高组 】模拟赛C
2016.6.11[初中部 NOIP提高组 ]模拟赛C No.1!!! 100+33.3+10+90=233.3 23333 1298. 牛棚(graze2.pas/c/cpp) 题解 1299. 洗 ...
- 6271. 2019.8.4【NOIP提高组A】锻造 (forging)
6271. 2019.8.4[NOIP提高组A]锻造 (forging) (File IO): input:forging.in output:forging.out Time Limits: 15 ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结
2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...
最新文章
- hibernate的实现原理
- UVALive - 3902 Network
- MyBatis 解决了什么问题?
- Go 超时引发大量 fin-wait2
- 计算机作文叙事,电脑争夺战叙事作文
- C++交换两个数组的前n个字节
- ENVI5.3.1使用Landsat 8影像进行典型地物光谱简单分析实例操作
- ImportError: cannot import name ‘XGBClassifier‘
- 打印机设置手动双面打印方法
- nat64 dns64 linux 内核支持,搭建NAT64/DNS6实现IPv4/v6转换
- [高级]pdf生成(可水印)、pdf预览(可分页)、pdf打印:全栈一条龙方案
- nginx学习-负载均衡-keepalived高可用-反向代理
- [精简]托福核心词汇62
- mysql 分数段_编写sql实现分数排名 mysql
- 九章算术 八:《方程》
- 阿里巴巴逆向js,request模块获取数据
- 迷宫之深搜回溯算法(B站)
- CorelDRAW 批量导出jpg文件的方法
- Flutter学习笔记(一)
- Apollo:参考线信息类ReferenceLineInfo
热门文章
- 安装oracle11g数据库问题,linux 6.3安装Oracle11.2 R2数据库问题汇总
- 是什么的简称_什么是“KDJ”?通俗易懂,让你了解股市上的那些英文简称
- 【相机标定与三维重建原理及实现】学习笔记1——相机模型数学推导详解
- IOS 和安卓系统比较
- 智能家居和建筑行业调研报告 - 市场现状分析与发展前景预测
- uniq命令注意事项,检查重复行的时候,只会检查相邻的行。
- RustDesk 自建服务器,局域网可以连接服务器,外网就不可以了。 求高手指点迷津。
- WiFi - 为啥WiFi信号的总是这么差?【附:解决方案】
- facewarehouse
- 旷视face++,图像识别