信息学奥赛注意事项
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
潍坊信息学竞赛注意事项
一、复赛内容与要求:
在初赛的内容上增加以下内容:
A.数据结构:
1.指针类型
2.多维数组
3.单链表及循环链表
4.二叉树
5.文件操作(从文本文件中读入数据,并输出到文本文件中)
B.程序设计
1.算法的实现能力
2.程序调试基本能力
3.设计测试数据的基本能力
4.程序的时间复杂度和空间复杂度的估计
C.算法处理
1.离散数学知识的应用(如排列组合、简单图论、数理逻辑)
2.分治思想
3.模拟法
4.贪心法
5.简单搜索算法(深度优先广度优先)搜索中的剪枝
6.动态规划的思想及基本算法
二:注意事项
1. 务必看清题目,严格按照所要求的格式输入、输出。
2. 在调试程序时请先使用题目中的示例数据,然后再自行设计多组测试数据进行调试。特别注意最大值与最小值(极值)。
3. 测试有严格的时间限制,请尽可能优化算法。
4. 命名规则:各题都规定了该题的英文名称。要求提交程序的文件名一律采用小写。程序文件和数据文件的主文件名都是该题的英文名字。程序文件扩展名采用语言环境的默认扩展名。数据文件都是文本文件,输入数据文件和输出数据文件的扩展名分别是.in和.out。
5. 程序应从输入文件中读取数据,然后把结果严格地按照规定的输出格式输出到输出文件中。
6. 考试题目在考试微机的D:/盘下“prlblem”文件夹中,考试结束请将程序放到以“你的考号+姓名”(中间无空格)命名的文件夹中,并将此文件夹放到D:/盘下“test”文件夹中,考试结束后此文件夹要处于打开状态方可离开考场。
选手请认真核对提交的源程序的文件名,写错的文件名的题得0分。
如何骗分:
对于一个约定无解输出-1的题目,骗分者只写一行代码就可以把无解的部分分数拿到,有时把示例输出也可能拿到10分。这只是万不得已的情况。最好是依靠实力拿分。
空间复杂度不能超过内存限制,一般情况下数组不宜开的过大。如果开一个10数组将会出现内存不足的情况,这时就要设计一个优秀的算法来优化空间性能只找出实际有用的信息。
2010潍坊试题分析
2010年潍坊市青少年信息学奥林匹克竞赛试题(普及组)
2010-11-05 10:06
2010年潍坊市青少年信息学奥林匹克竞赛试题(普及组)考试注意事项:答题时间为3
小时。本试卷共4题,每题分值100分,总分400分。
比赛得分 (score.pas/c/cpp) 【问题描述】最近,市里组织了一次计算机技能大赛,每个选手的最终成绩的计算方法是:根据评委亮分(分数为正整数,不超过100),去掉一个最高分,去掉一个最低分,剩余的得分为该选手的有效得分,对其取平均值就是该选手的最终得分。现在请你编写程序,输入评委数目和所有评委的打分,输出该选手的最终得分,保留小数点后两位。
【输入文件】score.in 一行,第一个是评委的数量,之后是每个评委的打分。各整数用空格隔开。
【输出文件】score.out 平均分的值,一个实数,保留小数点后两位。
【样例输入】
5
95 80 89 90 86
【样例输出】 88.33
装箱问题(pack.pas/c/cpp)【问题描述】有一个箱子容量为V(正整数,0≤V≤20000),同时有N个物品(0<N≤30),每个物品有一个体积Vi(正整数)。要求N个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
【输入文件】pack.in 第一行一个整数,表示箱子容量;第二行一个整数,表示共有N个物品;第3行~N+2行,各有一个整数,表示这N个物品的各自体积。
【输出文件】pack.out 一行,一个整数。表示箱子剩余的最小空间。
【样例输入】
24
6
8 3 12 7 9 7
【样例输出】 0
出栈序列统计 (stack.pas/c/cpp) 【问题描述】栈是一种常用的数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。现在已经知道栈的操作有两种: PUSH 和 POP,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列得到一系列的输出序列。给定一个n,计算并输出操作序列1,2,3,……,n经过一系列操作可能得到的输出序列总数。
【输入文件】stack.in 一个整数(1≤n≤15)
【输出文件】stack.out 一个整数,即可能输出序列的总数目
【样例输入】3
【样例输出】5
邮局设立(post.pas/c/cpp)【问题描述】一些村庄建在一条笔直的高速公路边上,我们用一条坐标轴来描述这条公路,每个村庄的坐标都是整数,没有两个村庄的坐标相同。两个村庄的距离定义为坐标之差的绝对值。我们需要在某些村庄建立邮局。使每个村庄使用与它距离最近的邮局,建立邮局的原则是:所有村庄到各自使用的邮局的距离总和最小。【输入文件】post.in 输入数据有两行,第一行两个整数用空格间隔,分别是N(1<=N<=300)表示村庄数,M(1<=M<=30)表示邮局数。第二行共N个用空格间隔的整数,表示N个村庄的坐标,1<=村庄坐标<=10000。
【输出文件】post.out 输出数据一个整数表示最小距离和。
【样例输入】 10 5 1 2 3 6 7 9 11 22 44 50
【样例输出】 9
第一题:一般是排序问题,最好用数组来做。2009年试题也是一个排序的试题,这样的题目比较简单。一般情况下只要把第一题做出来就可以参加省赛。
第二题:是背包问题,而且是典型的01背包问题。这个要用到动态规划。在省赛里也常有动态规划问题。不过试题要相对难一些。
第三题:实际上考的是排列组合问题。
出栈序列统计解题报告
题目描述很简单,将数据通过栈输的序列数目输出。
由于只有两种操作push 和 pop (即入栈和出栈),所以我们可以把入栈操作记为0,出栈操作记为1。
所以这道题可以转化为在2n个数中放入n个1(其余的填充0)且满足任何一个位置中的1个数不大于0的个数的排列方式。
有了这样一个模型解题就有了我们的方向。
1、直接接受的方法应推搜索:
我们可以枚举所有满足要求的排列方式,再不重复的前提下将计数器加1。方法很简单但是效率很低很低。
2、O(n)的算法(组合法):
首先不要过于激动我们的两种算法的效率差距。经过下面
分析你会发现其实我们所要求的只不过是卡特兰数。
首先在2n个位置中放n个1的方法有C(n/2n)种,当然其中也有不满足情况的序列。那么不满足情况的序列有什么性质呢?