OI 学习指北
OI 是我这辈子为数不多长期坚持去做的事,哪怕退役了,也不错过每一场在假期的 CF。
我虽然是个高一连复赛都没过、高二省选连全省前六十都没进的蒟蒻,但还是想给大家分享一下自己的一些经验。
本文是在半夜写的,不太清醒,疑似有很多错别词,还请见谅。部分写的不详细的或有问题的可以单独联系我,我来解答疑惑或纠正错误。
为什么学习 OI
我列出一些我们学习 OI 原因:
- 为了升学。如为了拿金牌保送清北,拿银牌参加强基计划,拿一等参加综合素质评价等,不得不承认,这是我们的主要目的,虽然有些功利;
- 个人兴趣。我最初学习 OI 还真就是因为个人兴趣,如果你有兴趣,它会让你走的更远。
- 为了将来工作。不得不承认的是,五大竞赛中信息学奥赛是与就业最相关的,不仅仅是程序员相关的职业(如算法工程师),不少行业都需要会编程的人才。
学 OI 能带来什么
金牌就是清北,这是毫无疑问的(更准确的说是集训队就是清北,金牌全国一般是 50 个和集训队一定是 50 个,偶尔会因为同分出现 51 个金牌等情况);
银牌你可以得到大多数强基的破格资格,并可以去参加绝大多数学校的冬令营等活动获得签约机会;
铜牌约等于一等;
一等你可以在综评上获得一定优势,并可以参加大部分学校的冬令营等活动获得签约机会;
此外,我并不认同 OI 可以提高你的文化课的观点。
总体计划建议
如果你想进省队,建议的总体计划
初一初二学完普及组所有内容和提高组大部分内容(参考 NOI 大纲 6 级级以下内容),获得普及组一等,提高组二等。
初三学完提高组内容,获得提高组一等。
高一学完绝大多数 NOI 内容(参考 NOI 大纲 9 级以下)获得 NOIP 一等,并参加省选,获得全省前 50 的成绩。
高二获得 NOIP 高分一等(300+),参加省选并进入省队。
注意,如果你的目标是金牌,以上速度是不够的。
如果你只想拿一等,建议的总体计划
初一初二学完普及组内容,获得普及组二等。
初三学完提高组大部分内容(参考 NOI 大纲 6 级级以下内容),获得普及组一等,提高组二等。
高一学完提高组绝大多数内容(参考 NOI 大纲 7 级以下),并获得 NOIP 一等。
观察到计划里没有高二,高二了还仅仅为了一等努力不如赶紧回去学习文化课。
学习建议(本文重点)
首先,你需要牢记 OI 是算法竞赛,不是程序设计竞赛。算法竞赛不是比谁学的知识点多,不是比谁会写代码,而是比谁会想题。
关于做题
想学好 OI,做题是最关键的。
要做什么题
难度上建议做自己需要花费四十分钟到一个小时能做出来的题。
题目类型上建议做考察思维的题,而非板子题。也就是做需要你动脑子想的题,而非只需要瞎写代码的题。
题目来源上十分建议较低水平(NOIP 低分一等)的选手可以尝试板刷 ABC,这里的板刷不是每到题都做,而是做难度合适的大部分题目,推荐去做 ABC 250~300 之间的题,这部分题目的质量较高。此外,建议在考前数月板刷往届 CSP、NOIP和省选中难度适中或偏难的题,不会尝试考虑部分分,做这部分题一定要去想部分分。
怎么做题
开题四十分钟以内绝对不要看题解,尽量不去看标签,实在不会了再去看标签。
此外,牢记做 OI 题的核心是打草纸,不是电脑。也就是说,做题的核心是思考这道题怎么做,用什么算法,而不是写代码。
看题解
一个小时不会就去看题解吧(除非你在考试)。看题解不是一下子全看完,而是要先想好自己会什么,不会什么,再去看自己第一个不会的地方怎么做。
建议一道题只要是不会看了题解的,就去在做完题后写一篇题解,不用太详细,写题解的目的是为了让你把这道题再想一遍。
关于比赛
比赛其实就是在规定的时间内做题,**洛谷、CF 和 AT **这三个平台的比赛一定要多打,尤其是后两个。
打比赛这件事不应该有老师要求的,而是主动的。
最推荐大家打的是 Atcoder(AT) 上的 Atcoder Beginner Contest (ABC),基本上赛场上能做出前四个题是一等水平,能做出前六个题是省队水平。ABC 基本上是在每周六的 20:00 到 21:40,也不会占用大家太多时间,ABC 我是每周必打的。B 站上 up 主“清北学堂”每周日晚会有前一天 ABC 的讲解,建议去听。
此外 CF 上的题目的质量会更好,但是因为时差等原因,通常比赛时间为 22:35,这个平台的比赛如果你能熬夜的话,也非常建议打,当然也可以在赛后补题。
打完一场比赛后,一定要补题,即继续做你没做出来的题。建议每次比赛在你没做出来的题中选最简单的一两道题做会,实在不会的哈就去看题解。
其他建议
- 多与其他人交流,不仅仅与同校的同学交流,一定要多和其他学校的同学通过 QQ 和洛谷等方式进行交流,可以通过 QQ 群等方式认识别的同学,特别推荐群聊 197293072,里面有很多有实力的选手。
- 不要局限于老师,奥赛不同于文化课,自学能力非常重要,如果你只是按部就班的按照老师知道,固然不错,但是一定要学会自学。在刚起步时,老师可以教你,但当你达到普及组一等以上的水平时,绝大多数时间就是自学了。
- 重视外出集训,大家可能还不知道什么是集训,集训就是指外出学习,在集训时,与平时不同,会有金牌选手指导你。外出集训是需要一定的资金的,但是确实会收获很大。比较推荐大家去的就是山东省的夏令营,每年暑假都会有一周的集训,建议每年都去。
- 不能落下文化课。很多同学在初中文化课很不错,但是在你学了奥赛之后,尤其是在高中,文化课时间会被挤占不少,基本上别人三年高中学三年文化课,你只能有一年半的时间学习文化课。所以我比较建议在你初中文化课不错的情况下,学习高中内容,尤其是高中数学,比较建议在初中里把所有的高中内容都简单过一遍,不需要非常精通。(如果你认为自己 100% 金牌当我这条没说)
- 多去看他人的博客(如 Alex_wei 的博客),并尝试自己写博客,推荐在博客园上写博客。
- 重视细节,总结自己出错的地方。
- 不要利用过多的上课时间在微机室摆烂。由于电脑的存在,信竟是摆烂高发竞赛,但是真的请不要在上课时间摆烂。
其他常见问题
我好像还有一些比较零碎的经验想要传授(大多数是我在初学 OI 时遇到的问题),这些可能不具备普适性或者我认为不太重要,我统一收录到这里,大家可以选择阅读。
Q:OI 需要学习什么知识点?
A:我认为,学习完基本语法和算法(也就是学校老师能教你的东西)和一些一定要学的东西(普及组全部算法)后,OI 知识点的学习可以在做题中学习。你可以不用可以的学习某一个知识点,而是只关注做题,直到做题遇到了不会之后再去学习。比如,我 AC 自动机的学习就是在我有一次 ABC G 题考到了 AC 自动机板子之后才去学的。
Q:有什么关于 OI 的书记推荐吗?
A:学 OI 不建议以书籍为中心,推荐去网站 OI wiki 和其他大佬的博客上学习知识点。但是有兴趣可以去阅读一下洛谷的《深入浅出》、李煜东的《算法竞赛进阶指南》和清华大学出版的《算法竞赛》,学习初赛的话还是建议用《信息学竞赛一本通》(仅限学习初赛要考的知识点,学习复赛内容不要看这本书)。
Q:怎么选择去哪个集训?
A:建议去一些较自己水平较难的集训,通常集训都会告诉你要讲的知识点,差不多有 60% 的知识点你会的难度就差不多,因为大多数集训都是点一下知识点后直接讲题。
Q:学习遇到瓶颈,进步很难怎么办?
A:遇到这种情况建议多去和别的大佬交谈,不嫌弃我的话和我交谈也可以(QQ:1926547192)。
可能我的话会有点强硬,但是这些话真的是我这几年亲身经历所总结的我自认为很重要的建议,希望对你有帮助。
推歌:世末歌者(歌手:乐正绫)

浙公网安备 33010602011771号