• OI生涯回忆与经验分享(更新中)


    OI生涯回忆与经验分享

    感谢小粉兔、ix35、yzhang 的推广! 兔兔太好了 mua mua mua。

    本文在持续更新中。以下是更新日志:

    • 2021.6 搭建了框架。完成了前两部分;和第四部分的一点点内容。

    • 2021.7.9 更新了第三部分。至初三上学期普及组考试前。

    • 2021.7.22 更新了第三部分。至初三上学期普及组考试。

    一、OI简介

    OI,即信息学奥林匹克竞赛。

    现行政策下,OI 对升学的帮助主要有以下两种方式:

    • 进入国家集训队,保送北京大学(或其他一般院校)。即不用参加高考。
    • 在 NOI 中获得(A,B,C 类)银牌,可以破格进入北京大学(或其他一般院校)强基计划(俗称 -OH)。实际效果相当于在高考中降分录取。

    此外还有一些小的作用,如 CSP-S 奖项可以帮助入围中科大少年班招生,NOIP 奖项在外语类保送中有加分,NOIP 一等奖在综合评价中也有作用(据说实际效果是高考达到一本线即可进入南京邮电大学)。但我对此了解不多。

    下面我们以一名高一的中学生为例,介绍一般性的 OI 竞赛经历:

    • 高一上学期 10 月,他参加 CSP-S(CCF CSP 非专业级软件能力认证 提高级)第一轮评级(俗称初赛)。这是笔试,也是整个过程中唯一的笔试(接下来都是上机考试了)。一般不难通过。
    • 通过 CSP-S 第一轮评级后,高一上学期 11 月,他参加 CSP-S 第二轮评级(俗称复赛)。难度中等。
    • CSP-S 第二轮评级获得大于 0 分后,高一上学期 12 月,他参加 NOIP(全国青少年信息学联赛)。难度与 CSP-S 第二轮类似或稍难一些。
    • 在 NOIP 中达到所在省份指定的分数线后(一般为全国一等奖线),高一下学期 4 月,他参加 NOI 省队选拔。难度较高。
    • 入选省队后,高一高二之间的暑假,他参加 NOI(全国青少年信息学竞赛)。NOI 难度很高,设有金牌 50 人(等同于国家集训队),银牌 150 人,和铜牌若干人。
    • 在 NOI 中入选国家集训队后,他会在高二完成集训队作业,参加 CTT,冬令营(50 进 15),和 CTS(15 进 4)。然后综合上述成绩入选国家队,参加 IOI(国际信息学奥林匹克竞赛),并有机会在 IOI 中获得满分(俗称 AK IOI)。

    如果在中途某步挂了,他在高二还可以再来一次(也就是在高二上学期参加初赛,在高三毕业的暑假 AK IOI)。

    省队选拔的规则比较复杂,点击展开

    省选结果一般将 NOIP 和省选赛成绩分别按标准分计算加权排名。省队分为 A,B,C,D,E 五类。A,B,C 类只对高中生开放;E 类只对初中生开放。每个省通常有 A 类名额 5 人,B 类名额若干(10 人左右),C,D 类若干,E 类名额 5 人(但对选手的总排名,即含高中生的排名,另有限制)。A 类选手在 NOI 中有 5 分的加分(但由于竞赛总分是 700 分,所以 5 分的影响比较有限);B 类就是最普通的参赛者;C 类在效果上等价于 B 类;D,E 类对升学无实际帮助。在我校,一般固定有 C 类名额 1 名,D 类 4 名;C,D 类名额分别需要交费 20 万和 2 万元左右,由未进入 A,B,E 类的选手自行报名,在报名者中按省选排名从高到低取。全省排名最高的女生,自动进入 A 类(并占用 5 个名额中的 1 个)。每个学校入选 A,B 类的总人数(不含排名最高自动进入 A 队的女选手)不得超过全省 A,B 类总人数的 1/3(四舍五入)。总得来说,在省队选拔中,各省的自主性较大,政策也不尽相同。

    二、个人成就

    点击查看全部获奖情况明细:OIERDB UID64000

    我来自南京外国语学校。初三开始学习 OI。高一获得 CSP-S 一等奖;在高一升高二时以 D 类选手身份参加了 NOI2020 并获得铜牌;高二获得 NOIP 一等奖;高二参加省队选拔(全国 A 卷),总分 354,在江苏省总排名 30,高中生中排名第 25,未能进入省队;此外还获得过冬令营银牌和多个比赛的铜牌。

    2021 年省队选拔全国 A 卷 354 分的成绩虽然在江苏省未能进入省队,但在全国总排名应该是不错的,且在绝大多数省份都可以入选省队。虽然我最终未能靠 OI 实现升学的目标,但读者如不嫌弃,可继续看我分享一点故事和经验。

    三、我的OI经历

    注:我是 2016 年进入南外读初一,2019 年升入高中,2022 年毕业。为了方便读者理解,我尽量用年级、学期代替具体的日期。

    开端:与编程和算法的初见(初二)

    开始学习信息学竞赛有两个背景。

    初二开始时的某一天,我突发奇想,想要学习编程。因为我觉得编程在未来可能是个很实用的技能(不知道从哪听过一种说法:以后的人会编程就和现在人会说英语一样)。这个指示下达给我妈妈,她对这方面也一窍不通,问了问认识的朋友,就找到了一个不大知名的编程老师。每周三放学后,我去他那里,他给我一对一上课(^{[1]})。当时学习这个的心态,就和别人学弹钢琴、打羽毛球差不多,只是拓宽一下知识面,培养一项爱好,没有考虑过参加任何比赛,更没有想过会对升学有帮助。一开始我连学什么语言都不知道,碰巧那个老师教的就是 C++,不然在以后转型信息学竞赛的过程中可能要走更多弯路。老师人很好,讲课生动、好懂,讲授的主要是一些基础的语法知识(循环、变量、数组、字符串、结构体)。我当时对这些东西挺感兴趣的,至少比小时候父母对我强制培养的乐器、体育等爱好要喜欢的多。对我而言,这段时间的编程课就和读书、体育锻炼一样,既是一种解压、休闲的方式,也是在学习之余丰富和提升自己的途径。我对这个课程和这段经历是满意的,但是不建议一开始就打定主意要走信息学竞赛道路的同学模仿。其实这些基础的语法知识完全可以在一两节课的时间里学个大概,然后通过大量做 OI 题来强化、巩固,自然而然就熟记于心了。

    另一个背景是在初二上学期,经过此前半年的默默耕耘,我的校内成绩(^{[2]})一跃进入年级前列。我的身份一下子从“学习困难”变成了“学有余力”。不像大部分南外同学从小都是奥数、英语样样精通,拿奖拿到手软,我小时候父母奉行的是“快乐教育”,我小学几乎没上过课外班,自然也没什么亮眼的成绩。碰巧在初一快结束的时候突然开窍,努力了一波,把校内的东西学明白了(^{[3]}),当时我的心态有点像个暴发户:终于轮到老子也阔一把了。你们学霸搞的那个什么奥数比赛,我也要搞!你们外面上的那个什么精英班、联赛班,我也要上!我又一顿突突,先考上了学校的数学兴趣班,又考进了学而思化学联赛班。这两个都挺难考的。我当时感觉是:我经过一段时间的奋斗,终于跻身于全校最高智商的行列(当然,现在看来,这些完全不算什么)。学了几个月数学和化学后,我发现自己其实没什么兴趣。竞赛的知识较难,仅靠每周一两次的课是不可能完全掌握的;而我因为没什么兴趣,不愿花时间课后练习、琢磨,逐渐就有些跟不上了,从而更没兴趣。此时是初二寒假,截止到目前,我还是以校内学习为重心,而且成绩越来越好。但是我又不甘心就此放弃给我带来极大骄傲的课外“竞赛”学习。一个想法浮现在我脑中:何不将我感兴趣的“编程”作为自己主攻的竞赛,去信息学竞赛试试水?

    有了学习信息学竞赛的想法后,我联系了南京本地知名的信竞老师顾铁成老师,以及学校里的竞赛教练史钋镭老师。他们看了我原先(编程课)学习的内容后,给出了不约而同的回答:学得太浅了。起初我很困惑,明明我挺认真地上了半年编程课,为什么他们说这只是 oier 第一节课就学完的内容?其实,这就要涉及到信奥是什么。完全不了解的人觉得信奥就是修电脑,和学校微机课学的电脑操作没什么区别;稍有了解的人知道 OI 是要写程序,他们觉得这就是程序员的工作,和开发 APP、写个网页没什么区别。其实这两种理解都是错误的。OI 的考察形式确实是写程序,但是它的侧重点是“算法”。在 OI 中,你不需要深究编程语言的特性,也不需要完全理解面向过程、面向对象这样的概念,甚至连输入、输出都被简化为了对纯数据的操作。你需要学的,只是处理这些数据、解决问题、求出答案的数学方法。换言之,编程只是一个工具。编程和信奥的关系,就好比背单词和写作文的关系。你单词都不会拼,当然写不了作文。但是如果你参加作文比赛,比的不是谁会的生僻词多,而是谁作文内容写得好、修辞恰当、思想深刻。当时的我,就是刚刚背了一些单词,但没学过写作文,不知道任何修辞手法,脑子里故事、例证都没有,自然参加不了作文比赛。

    我性格里有一股倔强劲,你越说我不行,我越要做给你看看。在初二下学期,我参加了学校的信奥课(每周二、周四晚上),周末还去上顾老师的课。顾老师和史老师都极富基础算法的教学经验,能把这些算法讲得生动形象、深入浅出。大家今天熟知的,单调队列里元素“又老又不中用”、“又年轻又好”这个比喻,最早就是顾老师创造的。我学到的第一个知识是 dfs,用它能解决好多千奇百怪的走迷宫题。这些题不难,但往往又需要一些构思,通过这样的训练,我不仅强化了自己的编程水平(^{[4]}),并且逐渐摸清了 OI 题是什么样子。

    不同于此前学习数学、化学,我对 OI 这门新奇的学问产生了浓厚的兴趣。史钋镭老师给我推荐了《算法笔记》这本书(它是比李煜东、刘汝佳的书更基础一点的算法书,我强烈推荐所有入门 OI 的同学看)。到初二快结束时,我除了每周在学校和顾老师的课上学到一些知识外,还通过自己在课外时间阅读《算法笔记》和在洛谷做题,更加系统、完整地了解了算法世界。搜索、二分、贪心、哈希、并查集、最短路、最小生成树等基础算法都是在这时学会的。从初二升初三的暑假开始,我大部分的 OI 知识已经不是来自课堂,而是来自自己自发的课外学习、练习

    [1] 2 小时。

    [2] oier 习惯称之为“文化课”。不过“文化课”总是相对于另一个“没文化”的事务(而且一般是主业)而言的,如艺术、体育、或 OI。当时我还不是 OI 选手,自然不使用“文化课”这一称呼。

    [3] 现在看来那时候的东西确实是很简单的,大家也不怎么卷,我稍一努力成绩上来了很正常。

    [4] 以前每周只上一次课,练的少,虽然一直在学语言,但是编程水平其实远不如 oier。

    初入竞赛:备战普及组(初三上学期)

    刚去顾老师那儿时,我被安排在进度较慢的班上,和很多小学生一起。不过我上课思维活跃、发言积极,而且课后花了一番功夫自学,很快就得到了顾老师的欣赏。从 6 月到 8 月,我一连跳了好几个班,来到了更深的课堂里。这段经历带给我很大的成就感。顾老师经常在课后与我沟通。他是个热心肠,话很多,而且非常善于鼓励人。顾老师给我一个很大的影响是,他最早向我灌输了“牺牲文化课来学习 OI”的理念。这是一个观念上的重要转折。在初二初三相交之际,信息学竞赛从“学有余力的补充”,变成了“带有升学意义的主业”。

    请注意,“带有升学意义”是一个比较模糊的概念。它不等于“以升学为主要目的”。关于 OI 的升学意义,其实有一个曲折变化的过程(^{[5]})。我刚上初三时,竞赛政策还是比较好的,我校一年大约能有 7 到 8 位同学通过 OI 进入清北(^{[6]})。同时,当时南外高中每年招收 10 位 OI 相关(^{[7]})的特长生。所以我当时有一个判断,如果我能拿到特长生,那么就有较大的可能通过 OI 进入清北。正是基于这个判断,我在初三觉得自己可以以 OI 为主业,全力以赴冲击特长生(^{[8]})

    当时流传着一个谣言,必须拿到 NOIP 普及组一等奖,才有考特长生的资格(^{[9]})。所以我在初三上学期最大的目标就是要拿到普及组一等奖

    要参加 NOIP 普及组,首先得通过初赛。我心里相当重视:好不容易大张旗鼓搞起来的竞赛道路,可别还没开始就结束了。我们家有每年国庆出国度假的传统,而且去的地方都挺有意思。这种旅途一般都是提前很久计划好的。可是那年我思来想去,实在是担心初赛翻车,于是在出发前几天临时变卦,不去了!那周我一个人在家里,我白天去顾老师那上课,晚上写一张初赛卷,确实也是简单美好的时光。我主要刷了《信息学奥赛一本通(初赛篇)》,里面包含了所有初赛知识点的讲解,和历年的卷子,的确配得上“一本通”这个名字。此外还做了少量学校教练和顾老师给的模拟卷。

    正式比赛就在南外举行。我第一次看到周末学校里有这么多人,还有好多小朋友,带着红领巾,穿着各色校服。没见过世面的我感觉颇为有趣,我想,如果小学时参加各种杯赛、奥赛比赛,大概也是这种场面吧。那次考试我算错了一道读程序(大题),小题错的不多,有惊无险地通过了 OI 生涯的第一战。事实上,虽然大家总喊着“初赛退役”,但整个生涯里还真没见过谁栽在初赛上。只要照常复习,大家大可不必过于担心。

    接下来就是全心备战复赛了。普及组复赛一共四道题(^{[10]}),其中前两题非常简单,后两题稍有难度。每年获奖的分数线不同,按往年经验,一般在 200 分出头(210~250)。史钋镭老师在课上分析道:“先把前两题做出来,细心一些,不要丢分。后面两题打打暴力,就能稳拿一等奖了。”他说的其实相当有道理。所以我对拿一等奖也比较有信心,甚至希望冲击更高的分数。

    我初学 OI 时主要在洛谷练习。洛谷界面美观(^{[11]}),基础题丰富,而且有题解区(^{[12]}),比较适合新手入门。洛谷上有近几十年的 NOIP 真题。我备战普及组时做的很重要的一个工作,就是从头到尾刷了一遍普及组真题。当时还没有建立自己的博客,但是我会在本地整理每道题的解法(和大部分 oier 写博客是类似的)。我把这种整理做得非常详细、认真,就像写一本自己的要出版的书一样。但是我的这种训练方式也有很大的问题。我过于注重漂亮的整理,但是忽略了自己独立思考的过程。这其实是竞赛和文化课一个很大的不同之处:文化课靠理解、记忆的东西多,而竞赛靠独立思考、创新创造的东西多。对很多题目,我稍微想了想,没什么显然的思路,就直奔题解区。虽然通过学习、整理,确实完全理解了别人的做法,但是失去了宝贵的、独立思考的机会。我增强了学习能力、代码能力、表达能力,唯独最重要的分析解题的能力没有得到很好的锻炼。这么做的另一个恶果是无法对自己的真实实力做出准确的评估。有些题看题解确实不难,但是一个新手自己就是不容易想到。在普及组比赛前,我总觉得自己至少能做出 T3,但真正去考了才发现没有这么容易(^{[13]})

    每周二周四晚上,我继续参加学校组织的 OI 课(^{[14]})。初三在另一个校区,学校单独安排了南京大学的 ACM 选手 Roundgod 来给我们上课。讲的是概率期望、数论(入门)、线段树(高级应用)、分块等提高组难度的知识;有时候不讲课,做模拟赛。Roundgod 老师很强,讲课也不错,但是这些知识点对我来说还是有些难了,我课后也没有及时地巩固练习,导致实际收获不大。此外,它们超出了普及组的考察范围,所以对我参加普及组的比赛自然没有直接的帮助。

    虽然我早有停课训练 OI 之意,但是初三没有这种政策,我白天必须要在学校上课。在对 OI 的热情不断升温,以及一定的叛逆心理的催使下,我初三时对文化课完全放任不管(虽然偶尔有一两次心血来潮,想过要努力一下,文化课和 OI 两开花,但是没做到过)。晚上回家的时间,只要不在颓,我基本都拿来训练 OI 了。即便训练方法不甚完美,我的水平仍然在缓慢平稳地进步。

    NOIP 前,我实在是训练心切,即便学校死活不答应停课训练 OI,我还是以病假为名停课了一个星期。那一周我主要在洛谷上做了一些往年提高组里的 DP 题,以及 USACO 银组的题目。当时,出于对 OI 的不了解,我有两个比较愚蠢的心态。一是完全按照去年的知识点来推断今年的题目,比如 T3(爆搜+剪枝)比 T4(二分+单调队列优化 DP)简单,一定会考爆搜和 DP,等等。二是有一种“押题”的心理:赶紧多看两道 USACO 题,说不定就考到了一样的呢。其实,OI 知识点很丰富,题目变化无穷,这样的推测和押题是没有意义的。开动脑筋,锻炼冷静思考、分析问题的能力,才是最重要的。另外,一周的居家练习给了我一个很深的感受,就是在家里时间过得特别快。这一点在高中停课以后还会更有体会。

    转眼间就来到了普及组比赛。比赛在南京航空航天大学举行(^{[15]})。我穿了件自以为很酷的风衣,一路听着恢宏振奋的《Victory》,带着一罐红牛(^{[16]}),早早地来到了赛场。电脑是 windows7 系统,装了 linux 虚拟机,我只用 windows(^{[17]}),操作还算顺利。第一次参加正式上机比赛的感觉还是挺奇妙的,和平时模拟会有很大不同。比如当比赛开始,看到封面上四道题目名称时,心想道:明年的 oier 们反复琢磨研究的,就是这四个东西了!

    前两题很简单。T2(^{[18]}) 的陷阱是要用 ( exttt{long long}),不过不难看出来。我也如计划中一样,顺利通过了前两题。

    T3 是道有点难的 DP 题。其实我在赛前做了不少 DP 题,但通常只是被动地理解别人的做法,或者是已经知道是 DP 题了再自己写状态转移方程,没有什么“实战”的解题经验。所以面对 T3,我竟然没看出来是 DP,也没有任何思路。稍作挣扎后,我奔向了 30 分的暴力,也就是以指数级的复杂度,dfs 穷举出所有可能的情况。写完后,我又写了另一个暴力(具体是什么方法不太记得了,可能和原爆搜本质一样),进行对拍。这一拍,拍出错了!我埋头检查,查不出错。只好带入数据进去手算,算了半天,才恍然大悟,原来是“另一个暴力”里有个小错误!怪不得对着第一份代码怎么查都查不出来。我当时经验太少,对复杂度也没什么概念,妄想用这个 (O(2^n)) 的爆搜冲过 (n = 500) 的部分分。于是又开始剪枝和卡常。那时候脑子已经不转了,不想新思路了,只是在东修修,西补补,做些无用的“优化”。与此同时,心理的贪婪又不让我停不下这些工作。我后来讲,不要用修修补补、调参乱搞的手头勤快,来掩盖思维的懒惰,这也是很多次比赛后才悟出来的道理。

    在“对拍错误”和“深陷卡常”两番耽误后,当我终于放下 T3,来到 T4 时,所剩的时间已经不多了。于是我读完题便直奔暴力。其实这题有不少暴力可以堆,但是由于时间不够,我只拿到了最低的 12​ 分。在些许遗憾中,比赛匆匆结束。

    走出考场时天已经黑了。史钋镭老师等在门外,和每个走出来的南外学生亲切交谈。回家路上,感受着这样的夜晚,寒冷、未知、希望、勇气,这些就是我对那年秋天最深的记忆了。

    我最终得分 (100 + 100 + 30 + 12 = 242),当年一等奖分数线只有 210 分,我顺利获得了一等奖。不过得分其实与我赛前的预期颇有差距,尤其是当看到李昕然(^{[19]}) 346、于之航(^{[20]}) 324 分的成绩后,我实在难以把这次比赛定性为一次胜利。

    虽然只是一次微不足道的普及组比赛,但它作为我的第一场上机正赛,还是反应了不少问题,甚至颇具象征性,回想起来叫人不由得感慨命运的奇妙。邓明扬说:“拿了普及组二等奖比没参加过普及组更糟,因为它说明你确实学了 OI,但是很逊。”我虽然暗自庆幸自己拿到了普及组一等奖,但其实这个低分一等奖,套到他的话里也是适用的。也就是说第一次普及组比赛,确实能在某种程度上反映出一个选手以后的天赋、风格、和将来的发展。

    首先明显可见,我的比赛风格是稳健型的。前两道简单题我稳定拿分,没有掉入陷阱,也没有因为初次参赛而犯什么低级错误。在第三题,即使是对一个 30 分的暴力,我也使用了对拍。从初学 OI 起,我就一直认为对拍是绝对必要的,否则很难发现和避免小错误,极有可能因小失大,满盘皆输。我后来讲,比赛不对拍,就是在裸奔。还记得新初三暑假在学校训练时,做了一套六道题后,李曙老师让我们预估自己的成绩。那几题都是简单的图论入门题,我大部分都会做,所以预估好几百分。结果测出来分数只有两位数。一检查,发现原来每个程序里都有点小错误。这件事给我的震撼很大,或许也潜移默化地塑造了我求稳的比赛风格。

    第二,也可以看出我不擅长在赛场上深入分析、解出略超出我“能稳定解决的范围”之外的题。T3 高于 30 分的部分分,其实有很裸的 DP(不用优化),但是我没有分析出来。T4 虽说有时间原因,但是都不好好动脑筋就轻易放弃,直奔暴力,也是我在后来总出现的一个很不好的特点。

    事后有人认为,T4 比 T3 简单,如果上来就死命想 T4 正解,很可能能做出来。但其实我是在已经知道了 T4 做法后才感到简单的,如果真让我自己想,我不好说是不是真能想出来。一模一样的情景,还发生在我 OI 生涯的最后一战:高二省选 day1 中(T3 是不是比 T2 简单),只能说是命运的奇妙。

    此外,这次比赛没有取得高分,缺乏经验也是一个很大的原因。比如时间分配的不合理,陷入了无效的剪枝与卡常。这些都是可以在以后避免的。

    [5] 这也是回忆录的线索之一。读者可以格外关注 OI 对于我的意义、以及 OI 的升学意义的变化。比如,目前为止我们已经经历了从“纯粹的兴趣爱好”、“学有余力的竞赛活动”、到“带有升学意义的主业”的变化。而在 2019 年考上特长生、了解到集训队保送政策、并且签订免修生协议以后,才可以说是变为“以升学为目的的绝对主业”。可以说这是一个不断背离初心,但又顺势前进的过程。

    [6] 主要通过在清北冬令营拿约、走自主招生。

    [7] 有“科技类”、“学科类”等名义上的区别。但其实都是 OI 特长生。它们的难度、考察方式、优惠幅度都完全等价。

    [8] 特长生意味着中考可以以很低的分数线录取,几乎相当于保送。不过从南外初中部升入本校高中本来就是非常简单的。所以我冲击特长生的目的不是升入高中,而是想达到一定的 OI 水平层次,为走“通过 OI 进入清北”的道路打下基础。

    [9] 后来发现我同学赵子轩明明没拿到普及组一等奖但是也可以考。

    [10] 每道题 100 分。所有 OI 比赛都是如此。

    [11] 这里主要是指和 bzoj、hdu oj 或 noi openjudge 相比。当时并不知道 LOJ。并且比起一些特别推崇 LOJ 极简风的人,我对洛谷可爱风的接受度还是比较高的。但是个人认为从 2019 年开始洛谷似乎越改越丑了。

    [12] 虽然洛谷题解质量饱受吐槽,但是与参差不齐的网络博客相比还算是有基本保证。另外,简单题、经典题做的人较多,题解质量一般都比较高。

    [13] 其中有 2018 年 T4 比 T3 更简单,以及我比赛策略的一些原因。但是总体来说我对自己实力的评估是不准确的。

    [14] 这个课对袁浩天、丁晓漫、张庭瑞三位最强的同学来说太简单了,所以他们是不参加的。我和两位与我水平类似的同班同学赵子轩、马煜轩,每次都会来。从放学到课前,有一段时间,我们会一起去麦当劳吃晚饭,这是挺美好的回忆。

    [15] 整个 OI 生涯中,我一共在南航参加过四次比赛。其中 NOIP2018(普及组)、CSP-S2019 和 NOIP2020 在同一个考场,CSP-S2020 则在另一个考场。后一个考场开阔、明亮,体验要好得多(事实上那次取得的成绩也是最好的)。可气的是于之航这个 B 每次都在后一个考场。

    [16] 我以前从来没喝过红牛,我妈常跟我说红牛对身体不好,但这也在另一方面给我留下了红牛“药效很猛”的印象。所以不管它实际上能不能提神,红牛对我来说是有很大的象征性和心理暗示作用的。但是千万别喝多,不然你会像我高二省选一样频频上厕所。

    [17] 我平时惯用 windows10 系统 + dev cpp,不使用命令行。比赛中一般建议无论如何要在 linux 下编译一下(防止关键字之类的)。不过我认为只要平时习惯够好,倒也不非得这么做。另外,我还听说过学长在 linux 下用命令行不慎删除整个代码,最后被迫重写(并绝杀)的故事。所以对 linux 和命令行有一些阴影。

    [18] T2 即第二题,T1,T3,T4 等同理,是信息学竞赛中的常见叫法。

    [19] 李昕然,南外学生,比我低两届(当时初一)。当年曾经常一起打 Codeforces。

    [20] 于之航,顾老师班上的同学。学得比我早。他在课上很积极,我对他印象颇深。他看上去和陈然、费阳水平类似,经常一起讨论问题,所以我没想到他那年也考普及组,是在赛后大家讨论时才知道的。

    未完待续。

    四、经验分享

    OI 有两个明显的特征。第一,非常低的投入能换取一些微小的好处(NOIP 一等奖),非常顶尖的水平可以得到极大的收益(集训队保送北大),但是在中间层次:也就是投入了不少的精力,但是水平还没达到顶尖时,则缺乏对应的“奖励”(如原先的“一本约”可视作此类奖励,但如今已被取消)。第二,单场比赛具有很大的不确定性。OI 知识点浩如烟海,每场比赛却只有 3 题,抽取 3~5 个知识点进行考察;同时,由于题目多样、形式自由,每套题可能有完全不同的打法,所以在 OI 比赛中考场决策、时间分配等往往对结果有过大的影响。

    综合上述两点,可以看出,想要在 OI 里赢,唯一的方式就是拥有绝对的实力。那么随之会有两种看法:

    • 一种看法认为,绝对的实力仅可能靠天赋获得。也就是说,CF 2400 分、省选 400 分、NOI 银牌,就是一般人靠刷题能达到的极限。
    • 另一看法认为,存在某种牛逼的训练方法,只不过持有上一种观点的人,他们还没摸索出来。不然你没法解释浙江选手的实力普遍远高于全国各地(总不能是浙江人天生就智商高吧)。多半是浙江强校掌握了这样有效的训练方法。

    我的结论是什么呢?

    我不知道。但我很清楚我自己肯定没有掌握上述的牛逼训练方法。

    从 NOIP2020,WC2021,到 2021 省选,我后期的所有比赛表现出来一个特征,就是很稳,但是没有特别漂亮的表现。只要是中等难度的题(CF 2400 左右吧),我一定能做出来,而且稳稳地拿到分(这三场比赛我几乎没有“挂分”)。但是如若稍微难一些,无论是有新技巧,还是稍难的思维分析,我从没有过“爆发”、“突破自己”,或“创造奇迹”。因此,我觉得在 2020 年底 2021 年初,我的 OI 水平已经触到一个隐隐的上限(因为退役了,所以叫“上限”;如果后来找到突破的方法了,则应该叫“瓶颈”)。那么如果再给我更多时间(三年),能否练出顶尖的水平呢?我不好说。有可能,找到突破的方法了,渐入佳境,最后练出来了;也有可能一直找不到突破的方法,那么就永远原地踏步了。

    讲到这里你就明白了,我没有牛逼的经验。我的经验,只能帮助你在刚入门 OI 时,少走弯路地达到一个勉强凑活的水平,剩下的路还带靠你自己摸索。


    首先我觉得每个 OI 选手都要仔细分析 OI 比赛题到底是什么样的。当然,这里我指的是正式比赛的题(也就是 NOIP、省选、NOI)。这种分析的一大意义就是让你自己保持清醒,不要被乱七八糟的模拟赛带偏。

    • 没有很难的算法。现在 CCF 已经有了考纲。但我觉得早在这之前,任何一个善于总结的人都能自己得出其中的结论:FFT 和生成函数是不考的;LCT 是不考的;计算几何几乎是不考的......。有趣的是,OI 模拟赛中经常出现这些知识点。我不喜欢这一现象,一方面它不能起到“模拟”的作用(准确反映出选手在正式比赛当中的水平),另一方面它会给选手的训练带来一些错误的引导。
    • 基础的算法有其固有的套路,非常重要。很多基础算法的固有套路,在比赛里多次出现过。第一次遇到时不容易自己想到,看了题解往往让人直呼巧妙。当你在平时遇到一道题,是基础算法在某些条件下的巧妙使用,请一定要多加关注。例如:很多二维 DP 可以把第二维搬到线段树上;需要考虑序列上所有区间,可以分治,每次只解决跨过中点的区间;多次矩阵快速幂,可以通过预处理矩阵的 (2^k) 次幂,转化成向量乘法......。
    • 分析问题性质的能力很重要。很多题看起来很难,其实是通过巧妙的设计,隐藏了关键的性质。有时候选手一读完题会被看似复杂的问题震住,然后就停止思考了。此时特别需要选手静下心来,在纸上写写画画,认真分析题目性质,将复杂的、实际的问题,转化成简单的、本质的模型。有时候完成这些分析,解题就成功了一大半。

    如何赢得一场比赛?

    我们教练经常强调打暴力的重要性,但我反而认为,我是太注重暴力了。每道题一上来就先看暴力分,整场比赛一开始就堆暴力,东拼一点西凑一点,这样是不对的。一道题的高分,往往需要天马行空的想法;一开始只盯着暴力,会限制你的思路。而一场正式的 OI 比赛(从 NOIP 到 NOI),只靠堆暴力,是绝对赢不了的。

    例如,CSP-S 2019 第一天,我第三题少拿了 10 分暴力分,别人总分都 210,我是 200。因此我第二天一上来就直奔暴力,这里写个 20 分,那里写个 30 分,写完再对拍一下,等三题暴力搞得差不多了,心态已经进入了非常浮躁、麻木、不耐烦的时候,不可能静下心来分析出正解。事实上,第二天三道题都不算难,我如果在刚开始时静下心来分析,应该至少能做出一题,这可比第一天的区区 10 分重要的多。在 NOI 等暴力分比 CSP-S 少的比赛,这一现象就更明显了。一个有趣的事情是,很多人比赛心态不好,是因为他们觉得别人啥都会做,自己就着急;而我恰恰相反,我总是以为别人都和我一样在打暴力,所以我每次拿到暴力分就潜意识里“自我满足”,难以静下心来思考正解,而事实经常是,出来一问,别人已经切了两题了!

    我认为比赛胜利的核心,不在暴力,而在于快速、稳定切掉签到题(快速是指留足时间给后面,稳定是指仔细检查对拍,确保不要挂分)。剩下的时间,由自己把握分析,随机应变,可能是冲一波,再切一题;或者保守一些,打好剩下两题的暴力。只要做好这一点,结果一定不会差。

    很多模拟赛的出题人是不会组题,不会把握难度梯度的。而正式比赛则不同,它一定有一道签到题。切掉签到题,不仅可以让你的分数有显著的竞争力,而且使你心情愉悦,更好地挑战其他题目。

    具体来说,要做好以下几点:

    1. 比赛开始时快速进入状态。
    2. 对每道题都进行初步思考。不要被表面题意迷惑,自己在纸上写写画画,做出初步转化,找出本质问题和关键性质。
    3. 在 2 的基础上准确选出签到题(签到题可不一定是 T1 哦)。
    4. 用灵活的思维、积累的套路,进行分析、解题。与签到题激战!
    5. 如果顺利想出来了,则快速地完成代码。否则至少不难得到一个高分暴力(70 分以上),好写的话可以先快速写出。写的过程可能给你一些启发。然后千万不要满足于此,在此基础上做进一步思考。实在想不出来?那先去看看别的题,一会再回来吧。相信你最终一定能切掉签到题!
    6. 完成正解后,写一个好写的暴力进行对拍检查。除此之外还可以自己造几组极限数据,或者使用瞪眼法,自己给自己梳理一遍代码逻辑,确保万无一失。

    完成签到题后,剩下的部分则因人而异、因比赛而异,没有固定的最佳策略。选手通过练习,应该可以自己摸索出一些经验。

    送大家 jiangly 的一句话,祝大家都能 打出锤子 切掉签到题:


    To be continued.

  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/dysyn1314/p/memoir.html
Copyright © 2020-2023  润新知