NOIP复赛谈

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NOIP复赛谈

复赛的命题

1.遵循大纲:考察常用的数据结构和基本算法;

2.考察能力:包括阅读理解能力、构建数学模型的能力、程序编码与调试能力、程序的时空性能分析和测试数据的生成能力、各种知识的综合应用能力等;

3.有区分度:一般4题,复赛题目的特点是:1-2题算法和数据结构比较明显、或者和数学关系比较大的题目,得率比较高;1题好上手,但程序量要大一点或数据规

模大的题目,考虑全面、得满分也不容易;还有1题一般是搜索、或者算法不明显、或者用到复杂高深一点的数据结构的题目,难度较大。但顺序不一定!!!

如何备战复赛

1.做做以往历年的竞赛题和网上的模拟题,熟悉比赛的题型和要求,找出自己的不

足,加强训练;

2.增强自己编写代码和调试的熟练程度,提高做题的时间和节奏感;

3.熟练掌握文件的输入/输出操作,熟悉新大纲中对复赛的要求;

4.提高自己设计测试数据的能力;

5.提高自己做题的正确率(分数/时间);

6.算法方面:递推、递归、动态规划、贪心、搜索(初中到回溯就差不多了)基本

上是必考!!!对一些经典问题和算法,一定要熟练的不能再熟练;

7.数据结构方面:字符串经常考,树(尤其二叉树)、图的基本算法(最短路径、最

小生成树等);

复赛注意事项

1.认真审题,尤其要注意问题的规模(数据范围),从某种意义上说,问题规模也

暗示了你可能的算法。数据小,也许是搜索派上用场的时候;数据大了,可能

只能考虑动态规划、数学方法等高算法了。

2.正确的估计题目的难度和自己的水平。拿到试题后先从总体上分析一下题目,

做到心中有数!注意:题目的难易对所有人是公平的,只要最大限度地发挥自

己的水平,不要有包袱,考出自己的最佳成绩。

3.正确地选择题目去做(最擅长、最简单的先完成),合理地安排时间和解题顺序。

4.复赛中:一定提高正确率!!!解题速度是其次。

5.复赛考查的算法并不困难,选手在实现上的问题往往要多一些。建议大家:

1)充分利用草稿纸,不要对自己的“心算能力”太自信!编程熟练的同学喜欢“一气呵成”,拿到题目就开始编码。这样不好,做信息学竞赛题的思维过程是丰

富而曲折多变的,考虑问题必须全面,仅凭一时的“感觉”来编程往往是漏洞

百出。比如初学者常常忘记做一些初始化工作(远不止变量赋初值这种最简单

的),即使有经验的同学也难免因一时疏忽写出几个错误的语句。最要命的是

“第一感觉”的算法是错误的或者效率太低(命题者的陷阱),而程序编了大

半才发现,时间浪费了不说,还影响了信心和发挥。

2)做一些复杂的题目,编码采取自顶向下,逐步求精的方法,调试时采用输出中间结果的办法及时找出错误的地方(初学者注意测试一下输入数据是否正确)。

可以这么说,思路越清晰,对自己程序的算法和编码越了解,调试也会越顺利

(一定不要忽视这一点)。

3)多测试:样例数据、极限(小大)数据、特殊数据,分析能否在规定的时空范围内出解,精度是否够,格式是否对,输入输出文件名、格式是否正确等。

4)不一定要拿满分,有些题目如果你很拿手,也肯定能做对,那么一定要保证拿满分;但有些题目,在有限的竞赛时间里,你很难拿满分,或者自己觉得没有

足够的时间和信心,没有好的方法,那么在很少的时间内用投机取巧的方法(如

贪心等)能得到不错的分数,也是一种很大的成功。

历年复赛题目分布如下(1997年以来)

NOIP2004~2008提高组复赛算法及难度分析竞赛试题名称算法构造难度实现难度综合难度

竞赛试题名称算法构造难度实现难度综合难度NOIP2004 津津的储蓄计划模拟 1 1 1

合并果子排序+二分查找 2 2 2

合唱队形动态规划 4 2 3

虫食算搜索 3 5 4 NOIP2005 谁拿了最多奖学金模拟 1 1 1

过河数学或动态规划 4 3 3

篝火晚会图论或数学 4 2 3

等价表达式分治 4 5 5 NOIP2006 能量项链动态规划 3 1 2 金明的预算方案动态规划 4 3 4

作业调度方案模拟 2 4 3

2^k进制数数学+高精 2 4 3 NOIP2007 统计数字排序 2 1 1 字符串的展开模拟 2 5 4

矩阵取数游戏动态规划+高精 4 4 4

树网的核图论 5 4 4 NOIP2008 笨小猴模拟 1 1 1 火柴棒等式搜索或数学 1 3 2

传纸条动态规划 3 2 3

双栈排序图论 5 4 5

复赛试题分析

1.递推(2002年初中组4:过河卒)

[问题描述]

棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。

[问题分析]

跳马是一道老得不能再老的题目,我想每位编程初学者都学过,可能是在学回溯或搜索等算法的时候,很多书上也有类似的题目,一些比赛中也出现过这一问题的变形(如NOIP1997初中组的第三题)。有些同学一看到这条题目就去搜索,即使你编程调试全通过了,运行时你也会发现:当n,m=15就会超时。

其实,本题稍加分析就能发现,要到达棋盘上的一个点,只能从左边过来(我们称之为左点)或是从上面过来(我们称之为上点),所以根据加法原理,到达某一点的路径数目,就等于到达其相邻的上点和左点的路径数目之和,因此我们可以使用逐列(或逐行)递推的方法来求出从起点到终点的路径数目。障碍点(马的控制点)也完全适用,只要将到达该点的路径数目设置为0即可。

用F[i,j]表示到达点(i,j)的路径数目,g[i,j]表示点(i, j)有无障碍,g[i,j]=0表示无障碍,g[i,j]=1表示有障碍。

则,递推关系式如下:

F[i,j] = F[i-1,j] + F[i,j-1] {i>0且j>0且g[x, y] = 0}

递推边界有4个:

F[i,j] = 0 { g[x,y] = 1 }

F[i,0] = F[i-1,0] {i > 0且g[x,y] = 0}

F[0,j] = F[0,j-1] {j > 0且g[x,y] = 0}

F[0,0] = 1

相关文档
最新文档