鸿福范文网
当前位置 首页 > 范文大全 > 公文范文 >

信息学奥赛,你准备好了吗?

发布时间:2022-10-23 08:10:05 浏览数:

编者按:新的一年,“高手论技”继续伴随大家前行,身处一线的你,就那些技术上最常遇到的故障、最需要解决的难题、最成熟的应用……都可以在此畅所欲言,各抒己见。是继续围观还是现身说法,新浪微群http://q.t.sina.com.cn/264976,期待您的共同参与。

● 信息学奥赛的意义

全国青少年信息学奥林匹克联赛和全国中学生生物学联赛、全国中学生物理竞赛、全国高中数学联赛、全国高中学生化学竞赛,被称为国内影响力最大的“五大奥赛”。由于参加“五大奥赛”获得省赛区一等奖的考生可以享受大学保送或加分资格,因此每年报考“五大奥赛”的考生总是乐此不疲,被称为“小高考”。目前,教育部已经出台政策,从2011年开始,入学的高中学生将取消奥赛省级一等奖保送和加分,奥赛的功利性将消失,回归兴趣和爱好。

信息学奥赛是“五大奥赛”中唯一非高考科目,虽然对高考没有直接帮助,但参加奥赛学习,能达到使大多数青少年在智力上有所发展、在能力上有所提高的目标。CCF理事长李国杰院士在NOI2009开幕式和NOI25周年纪念会上曾讲到:“给那些学有余力的中学生提供学习计算机科学的机会,提高他们的逻辑思维能力和用计算机解决问题的能力。竞赛本质上是面向问题的算法设计和计算机编程,这就要求学生有分析问题和设计算法的能力,还要有通过编写程序用计算机实现的能力。有了这种训练,不管将来是否从事计算机专业工作,对学生都有好处。”

计算机科学技术究竟是一门什么学问?计算机科学教给人们什么样的思维?中学生参加信息学奥林匹克竞赛究竟能增长什么能力?这些问题都值得我们深思。

● 读名词缩写,了解信息学奥赛

CCF:中国计算机学会。这是我国信息学奥林匹克竞赛的主办者。

NOIP:全国青少年信息学奥林匹克分区联赛。分为初赛和复赛两部分,其中初中学生可以参加普及组的竞赛,高中学生和初中学生都可以参加提高组的竞赛。

NOI:全国青少年信息学奥林匹克竞赛。这是全国决赛,每个省根据规则选派一定数量的选手参加,其中至少要有一名女选手。前20名选手获得金牌,并进入国家集训队。

NOI冬令营:冬令营培训内容包括授课、讲座、讨论、测试等。参加中国队选拔赛队员的成绩将作为选拔赛成绩的一部分记入档案。

CTSC:中国代表队选拔赛暨全国信息学精英赛。由国家集训队和其他80~100人参加,是中国代表队人选决定的最重要比赛。

APIO:亚洲与太平洋地区信息学奥林匹克竞赛。是一个面向亚太地区在校学生的信息学科竞赛。旨在给青少年提供更多的赛事机会,推动亚太地区的信息学奥林匹克发展。该竞赛性质为区域性的网上准同步赛,每年五月的第一或第二个星期六举办。

IOI:国际信息学(计算机)奥林匹克竞赛。这是面向全球中学生的信息学顶级赛事,每个国家可以选派4名选手参加。

大多数省还会举办省队选拔赛,以选拔参加NOI的省队队员。

其他竞赛如Topcoder、百度之星、网易有道难题等是面向所有人的,获奖者将获得丰厚的奖金,中学生也可以参加。

● 信息学奥林匹克竞赛形式与内容

从竞赛形式上说,只有NOIP初赛采用笔试,题型分为选择题(20分)、问题求解(10分)、读程序写结果(32分)、程序填空(38分)。选择题和问题求解涉及计算机硬件、软件、网络基础及数据结构与算法、组合数学等知识。

其他竞赛都是上机编程,采用黑盒测试的方法评定成绩。比如,NOIP复赛要在3小时内解决4道编程题,每道题在测试时有10个测试点(个别题会有更多),只要使用给定的输入数据得出和输出结果一致的,就能得到相应分数。当然,竞赛的另一个特点是每道题都有时间限制和空间限制,大多数题要求在1秒之内得到结果,不同竞赛对空间的要求会有差别,目前NOIP复赛每道题允许使用的空间是128MB。即使答案正确,如果超时或超空间,也会是0分。

信息学奥赛涉及的知识面非常广泛,有些难度达到大学本科甚至研究生的课程。因为内容繁杂深奥,通常要经过四到五年的刻苦学习才能达到较高的水平。

● 如何评测你的程序

因为竞赛基本上都是采用上机编程、黑盒测试的形式,那么平时如何评测学生的成绩呢?我们可以为每道题编写一个批处理文件,以此对程序的输入输出和标准输入输出相对比。这个方法比较原始,但在没有评测软件提供的环境下还是一个不错的方法。平时练习时,我们可以使用Cena或清澄评测软件评定学生成绩。

Cena是开放源程序的信息学竞赛评测系统,能满足大多数的评测需求。它能通过局域网自动收取选手程序,但每台学生机都必须安装Cena客户端,有一定的麻烦。我使用的方法是在教师机上安装FTP软件,学生通过FTP上传相应的程序,然后在教师机上统一评测,以下是主要的操作步骤。

首先在教师机上安装Cena。然后在某个分区,如D盘下建立一个文件夹专门存放测试程序,我将其命名为test。在test下再建一个文件夹,名为期末考查。打开Cena软件,自动弹出“新建或打开”窗口。单击“新建”页,在“竞赛标题”下输入期末考查,然后在“保存在”下面选择D盘下的“test\期末考查”文件夹,再按确定。在弹出的警告窗口中按“确定”。

现在在文件夹D:\test\期末考查下将自动建立两个文件夹,其中data文件夹里面是放测试数据的,把期末考查用到的四道题复制到data文件夹下。另一个文件夹src是用来存放待测试程序的。打开FTP软件,建立一个新的用户,用户目录指向D:\test\期末考查\src,将权限设置为可读可写可修改可删除。学生在做完题目以后,用这个用户名把源程序上传。按照NOIP复赛的要求,在src文件夹下先建立以学生名字命名的文件夹,然后以题目的英文名字为名在自己的文件夹下建立四个文件夹,分别把源程序放在这四个文件夹下。

回到Cena进行配置。单击菜单“工具-选项”,在“选项”窗口中“默认内在限制”原来为2560KB,现在NOIP复赛的空间限制为128MB,我们可以把值修改一下。值修改完后将在以后所有的考试中起作用。

在Cena主窗口中单击“试题”页,在“纲要”下右击,选“添加试题”。比如,第一题文件名为music,则在试题标题后输入music,源文件后输入“music\music”。注意文件名后面一定不能添加扩展名,否则将出现错误。如果源程序是放在自己的根目录下,那么在源文件里只要输入music就可以了。“输入文件”后面输入题目中要求使用的名字,一般是题目名.in,如这里是music.in,输出文件则为music.out。一般的题目不用改动比较方式。

添加完题目以后,再在试题1下右击,选“添加测试点”。在右边的窗口输入文件后单击,如果data下相应题目的测试数据所建文件夹和题目的名字是相同的,将会自动列出来。我们选择序号最小的一个输入文件,如music0.in,输出文件位置选择“music0.out”。我们还可以对这道题的分值、时间限制、内存限制进行修改。再在“试题1”下右击,选“添加其他测试点”,软件将自动按序号把其他测试点添加上去。

用同样的方法把其他三道题添加进来,单击“选手”页,按“全部评测”按钮,软件将对已经上交的程序进行评测,给出最后的得分和用时等信息。在“统计与分析”页,可以对某些题或某些选手的做题情况进行分析。

要注意的是,NOIP复赛提高组必须经过CCF最终评测,这个评测是在Linux下用北京航天航空大学编写的评测软件完成的,与在Windows下评测的结果可能会出现一些差异,特别是Linux下文件名大小写是敏感的,大家一定要注意。另外,NOIP提高组复赛CCF推荐在Linux下进行,有部分省市已经开始实施了,而NOI是必须在Linux下进行的,所以参加竞赛的选手要预先熟悉Linux环境。

● 语言的选择

竞赛规定可以使用Pascal、C、C++三门语言。在如何选择语言方面,许多人都很纠结。每种语言都有自己的优劣,我们只针对竞赛中语言的特点进行一些分析。

1.语言特点

Pascal具有严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强等特点,可以方便用于描述各种算法和数据结构。对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。C语言的优点是简洁、紧凑、使用方便、灵活、易于学习和应用,程序的书写形式也很自由,适合初学者使用。C语言的弱点也很明显:非强制类型;语法限制不严格,使得编程者无法过多地依赖C编译程序去查错;缺少实时检查,如数组越界等。因为C++是C的扩展,所以也具有C的特点。C++在C的基础上,加入了面向对象编程思想。

2.参考资料

需要大量的参考资料,也是奥赛学习的一个特点。因为Pascal在竞赛中使用的时间更长,市面上可以买到的参考书大多以Pascal或类Pascal写成。当然,现在的一个趋势是用C/C++写的参考书越来越多,网络上各大题库的题解以C++占绝对主流。

3.运行速度

对于三门语言的运行速度,到底谁最快?笔者分别以三门语言计算一千万次加法,以cena反复测试,结果基本稳定如图1。一千万次除法(整除)的评测结果如图2。在上两次的测试中,Pascal的劣势就比较明显了。再来看看一千万次求模运算,C/C++和Pascal的差异更加明显了(如图3)。

虽然对浮点数运算、逻辑运算、指针运算等没有继续进行全面测试,但基本上可以得出如下结论:C++和C语言的速度基本上处于同一级别;而C/C++和Pascal相比,确实在运行速度上有一定优势。当然,从出题时通常以标程的1/10作为时间限制的角度来说,只要算法一致,C/C++能在规定时间内出解,Pascal也是可以的,在这方面大家不用过于担心。只有当三者算法都不是最优,解题时间接近时间限制时,C/C++可能会显示出它一定的优势。

要注意的是,不同硬件配置的机器,运行同一程序所用的时间是不同的。同一台机器多次测试同一程序,运行时间也会略有差异。但它们三者的相对关系是基本不变的。

4.其他方面

C/C++语言简约,同样的程序,它们比Pascal要少打不少字母和符号。C++在竞赛中可以使用STL中的模板,其中含有大量比较实用的函数,在竞赛时使用可以提高程序的正确性和速度。

从近几年NOIP的报名情况来看,使用Pascal的还是占绝大多数,但C++语言的使用者在逐渐增多。如果只从竞赛的角度来看,C++有一定优势。个人建议,对小学高年级、初中低年级的入门者来说,最好选择Pascal;对初中高年级和高中学生来说,可以选择C++;特别是进入大学以后,如果参加ACM/ICPC,那么只能使用C/C++/Java语言,学习Pascal的学生要在适当的时候转学另外的语言。

信息学奥林匹克,教给学生的不仅仅是一种语言、几种算法,竞赛对学生的学习方法、思维能力、性格培养等方面的影响是非常深刻的。对爱好计算机而又学有余力的学生,信息学奥赛将展现出一个精彩的世界。

推荐访问:准备好了 信息学 奥赛

热门文章
Top