信奥竞赛

系列

剑指信奥 | 漫谈信息学奥赛的进阶之路

信息奥赛的赛事体系

全国青少年信息学(计算机)奥林匹克竞赛(NOI)始于 1984 年,这一赛事担负着从全国范围内选拔优秀学生参加国际信息学奥林匹克竞赛(International Olympiad in Informatics, 简称 IOI)的任务。

信息学奥林匹克竞赛是著名的五大奥赛学科(数学,物理,化学,生物学,信息学)之一,旨在普及中小学生的计算机科学知识,并为有才能的学生提供交流和学习的机会。

自从今年初 CCF(中国计算机协会)暂停 NOIP(全国信息学奥林匹克联赛)后,取而代之的是 CSP-J 和 CSP-S 两个等级考试,分别为入门级(Junior)和提高级(Senior)。更新:2020 年 1 月 21 日,CCF 公告恢复全国青少年信息学奥林匹克联赛 NOIP。

CSP-S NOIP 后,将根据成绩选出省队选手,晋级到 NOI 赛事,进而筛选出国家队,参加 IOI 比赛。

在以上赛事中,会穿插进行清华、北大的高校夏令营或冬令营,根据成绩予以高考降分直至降至一本线录取的奖励,这也是目前多数高校自主招生的主要方式。

信息奥赛的主要内容

虽然信息学奥赛的主旨是普及中小学生的计算机知识,但是纵观历届信息学竞赛试题,大多是计算机编程算法题。

试题综合考察参赛学生的逻辑思维,抽象能力和算法设计能力,同时涉及到了数学,英语等主科课程。

这是一道今年的 CSP-J (入门级)试题:

【问题描述】

小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串来玩数字游戏,小 P 同学想要知道字符串中究竟有多少个 1。注意:01 字符串为每一个字符是 0 或者 1 的字符串,如 “101”(不含双引号)为一个长度为 3 的 01 字符串。

【输入格式】

输入文件名为 number.in。输入文件只有一行,一个长度为 8 的 01 字符串 s。

【输出格式】

输出文件名为 number.out输出文件只有一行,包含一个整数,即 01 字符串中字符 1 的个数。

【输入输出样例 1】

number.in number.out

00010100 2

见选手目录下的 number/number1.in 和 number/number1.ans

【输入输出样例 1 说明】

该 01 字符串中有 2 个字符 1

【输入输出样例 2】

number.in number.out

11111111 8

见选手目录下的 number/number2.in 和 number/number2.ans

【输入输出样例 2 说明】

该 01 字符串中有 8 个字符 1

【输入输出样例 3】

见选手目录下的 number/number3.in 和 number/number3.ans

【数据规模与约定】

对于 20% 的数据,保证输入的字符全部为 0。对于 100% 的数据,输入只可能包含字符 0 和字符 1,字符串长度固定为 8。

这是入门级试题中的第一题,也是最为简单的一道“送分题”,但事实上对于中学生,尤其是参数人数众多的小学生而言,还是具备一定难度的。

信息奥赛的学习内容

目前 CSP-J/S 比赛可以使用 C++、C 或 Pascal 三种编程语言,而 2022 年以后,CSP 比赛中 C 和 Pascal 语言将不再可用,只允许使用 C++ 语言。所以,想要备战NOIP,必须学懂 C++。

C++ 是一门较难的编程语言,为了达到信息学奥赛算法题目的要求,除了学会 C++ 之外,还需要学习基本算法、数据结构、搜索算法、组合数学、图论等知识。

这个过程可以加深孩子对数学的理解,提升孩子的逻辑思维能力,同时会加强英语的学习。

在这种条件下锻炼的孩子,逻辑思维能力、数学建模的能力、灵活运用算法的能力、编写代码且调试的能力都会迅速加强,对大学课程的学习乃至未来的工作都会产生深远的影响。

信息奥赛的学习路线

根据 「详尽 | CSP-J/S 2019 第二轮认证全面统计分析」一文中对今年信息学奥赛的统计分析,我们建议的最佳学习路线是:

  1. 小学四年级起学习 C++ 语言基础,参加 CSP-J 或 CSP-S 比赛,达到三等奖水平。
  2. 初中一、二年级重点学习数据结构及基础算法,参加 CSP-S,达到一二等奖水平。
  3. 高中一、二年级深入学习各类复杂算法,刷各类练习题,进入省队,进而参加 NOI 或 IOI 赛事。

不可否认,最终能到达省队乃至国家队要求的只是众多信息奥赛选手中的极少数佼佼者,但最后成功者的共性都是勤奋再加上一点天分。

敬请关注趣乐博思教育「剑指信奥」系列课程,从零开始进阶信奥之路!