学习阶段与笔记法 ~星空的季节~ [蔡德仁随笔 #2]

· · 算法·理论

学习阶段与笔记法

年代和季节

秋去春来,四时往复。每年,我都会再见新的夏天和新的冬天,虫声依旧,而那些记忆中的日子已回不去了。

木已亭亭,人行青年。季节总是和记忆押着相同的韵脚,今年的初雪却又别是一种新色。

OI 学习有季节么?大概有吧,因为曾经遇到的恼人的“瓶颈”总是会再次不期而遇,一次又一次。

OI 学习有年代么?大概也有吧,因为学习入门语法时查找着看不懂的资料,等待教练喂饭的日子已经一去不复返了。

OI 学习的年代

OI 学习多所经历的年代更迭有三个,第一是由语法程序实现变为算法设计,第二是由跟随变为自学,第三是由积累实例变为研究推导。当然,我们的生活也由现役变为过往,由迷茫变为主动,但这就不是具体知识学习所讨论的内容了。

这三个变化,将 OI 学习划分为四个台阶,即普及、提高、省选、进阶。以这两年(2025 左右)的成绩而论,普及的上限,大致对应 J 组 350 分的水平;提高的上限,大致对应 S 组或 NOIP 250 分的水平;省选的上限,大致对应 NOI 的银牌水平。达到这一水平时,学习方式如不能相应的转变,将会事倍功半,大瓶颈就在这些转变中出现了。大的瓶颈,归根到底是学习过程中的质变,是需要新的能力而非旧方法的简单积累。

这四个台阶和三个转变,有各种各样的名字。普及到提高,在同学、教练和家长之间被称为普转提,我们这里称为 提高-;提高到省选,称为 NOIP+,我们这里称为 提高+;省选到进阶,还没有什么教学的名字,暂且称为 省选+ 罢。

年代的演进,不是抛弃了上一个年代的能力,而是在上一个年代的能力基础上,出现了一项新的更为主导性的能力。新的年代,是在上一年代基础上做出的扩展,之前的能力仍然继续飞跃发展。省选写代码的水平和方法,远远胜过普及组;进阶在面对算法设计时,理解也远比提高组更为深刻和自然。

这四个台阶和三个转变,可以粗略将 OI 学术的学习进度划分成七个年代。不要忘记,这种划分是为了教学研究和学习方法,仅对于 OIer 在此时此刻的学习现状,对 OI 学术知识的学习进度的划分。它不适合所有 OIer,不适合学习算法以外的问题,不适合本科数学系读算法的研究生,也不适用于别的时代,更无法放之四海而皆准。

每一段的特点,尤其是主线任务目标是什么呢?

注:以下目标均只针对该阶段的问题难度而言,只论主体,总有部分例外情况。

另外,每个阶段目标同时包括之前所有阶段目标的深入和发展。

在现实中,提高- 与提高,提高+ 与省选,省选+ 与进阶都是融为一体的,但仍有时间先后的侧重区别。

OI 学习的寒暑

季节是太阳的周期,是寒暑的变化。在形名春秋之前,我们先看看 OI 所以区分季节者。

提高级开始,OI 学术学习有两个主要的目标,即知识推导(发明、应用),而每个目标又有两个对象层次,例子理论。所谓知识即学习前人的积累,学习它们的例子(例如文章和题目),和深入理解它们的概念。所谓推导,即自行思考推理和解决问题的能力。

知识在推导的前面,学习知识首先是掌握例子,然后进而从例子掌握技巧、方法,更抽象的知识。推导首先也是自行推导具体问题,然后进而从例子总结发明技巧、方法,更抽象的知识。

推导就像拼拼图,我们需要先知道拼图总体的形状和大小,然后再知道三分之一位置的图案骨架,才能把剩下的空位填上去。这些基本的框架,就是经典的理论知识和例子。因此,推导总体上是处于知识之后的。许多数学竞赛成绩不错的同学,在刚刚学习 OI 时,为什么也做不出来提高乃至普及组问题呢?因为缺乏一些最基本的推导知识和经验。对任何一个 OIer 来说,统计一个序列信息时从左往右扫描枚举每个位置累计都是常识。可是对于初学者来说,这不是自然的,经常是想不到的,即使是熟悉静态结构性质的数学竞赛同学。这些最基本的,甚至不会出现在任何讲义中的习惯和经验,正是我们必须先从例题和理论得到的基石。

怎样学习知识呢?

AC 题目之后,过几天又不会了——这是简单记忆的日常。对知识的深入理解取决于两点,其一是关联,其二是应用

所谓关联,就是把不同的知识粘在一起,这可以是复杂的,也可以是浅薄的;可以是坚实的数学理论,也可以是仅仅某个片段的联想;可以是理论的关联,也可以是具体题目的聚合。完全图构造有 zig-zag 模式并且有高维乘积,最小割树是 Kruskal 重构树是笛卡尔树因而有路径最值等价链,莫比乌斯反演是高维差分,拉格朗日插值是中国剩余定理——当我们想到这些后,又怎么会忘记它们呢?随着学习的深入,未来又怎会没有更通用的理解呢?在我们的世界中,知识之间会被粘成一张网,这张大网上有的节点脆弱(片段的字面联系),有的节点坚实(严谨通用的数学理论)。学习新的理论,就像蛛网粘住了飞虫,之后在做题中,不断思考推广和联想中,将简单的字面联想深化为有数学道理的联系。

要维护这张网,不能任其在记忆中风化。因此,我们有了笔记、做题记录等办法。归根到底,它们就是以最高效,最简洁,最适合个人的方式,将这张,将我们对知识和它们关联、结构的认识记录下来,尤其是自己独立发现感到困难的部分,以及概括整体图景[overview]。它必须摒弃形式主义,必须是自己的,必须被长期维护。当我们有了新的深入的认识后,应当改进网中对应的知识和联系;当我们有了更大的新认识后,网本身的结构也要扬弃。

所谓应用,就是实际进行推导。不过,问题立刻出现了:积累足够知识后自然可以做题等,但是初学的时候怎样办呢?初学时知识储备是不支持长时间想题的,缺失关键工具就想不出来。在这时,应用主要就是学会理论、题解之后的推广、比较和类比。能否找到类似问题,有什么异同?能否改编这一问题/用同样的做法出题,改编后相比于原问题,为什么也能/为什么不能?能否有其它角度/算法解决这一问题,有什么异同?这个问题是否可被视为之前知识的推广,对相关老问题是否有新的理解?通过相似问题的对比搞清楚共同点和不同点,是准确理解知识,乃至理解其适用范围、推导动机和关联的主要手段。

可见,学习新知识时这些是一体的。在做了一些例题后,足以推广、比较、形成自己的认识。

有了认识,而后要表达、写作。编出一些题意,写出简要的笔记,和同学讨论讲解。乃至在学习较深入后,形成了自己的完整理解和总体图景,可以将笔记改进为完整的公开资源。

怎样学习推导呢?

就像知识是从具体例子到理论那样,推导也是如此。一开始是具体知识学习的例子的改编,理论的比较;是自己的认识的写作。当积累到基本掌握了本阶段主要工具后,推导根本的例子就是自己做题

自己做题——面对新的 OI 题自己做出来。对于一个问题的思考,大概可分为两种,第一是直觉,想怎样就怎样做,自然而然。第二是机械,当我们的直觉思考没有新想法时,转入机械的思路,利用我们认识和积累的数学方法的工具、技巧明确而自觉地研究这个问题。当然,直觉的效率最高,而机械方法不过是把大脑变成了语言文字的解释器,因此往往只在刚开始列思考方向以及没有新想法时短暂出现而回归直觉。具体如何研究,请看专门文章,本文不备详述。

何时看题解呢?开始发呆或者没有新想法的时候。OI 题 10 分钟没有得到新认识和思路,就该看题解了。这和绝对的总时长无关。

另外,自己做题后也要看题解,以及思考像初学时提到的那些内容。当然,对于自己熟悉的问题,这是很快的,几分钟的工夫。

自己做题多了,具体例子中也会产生理论。也就是我们自行推出的技巧。可以出题,这是 OI 题的主要来源——也因此,出一道新题对思维的提升比做十个题还要多。对于不适合出编程题的琐碎、鸡肋想法呢?可以交流,找到相关理论。找不到理论的,可以在笔记记下来,乃至出算法数学题——也就是思考题。

自己发明的什么,是温暖的朝阳,是一定要多想一想,继续拓展下去的。若遇到困难,也别忘记查一查人类文明的知识宝库,也许会有所收获。

遇到了困难,那也很好;发明简单和重复,也很不错。没有经典例子和理论的积累就没有新事物。一万年太久,强求自己找到一切是不可能的。没有任何学术脱离文明而存在,过去、现在和未来所有杰出的头脑和伟大的工具,无一不是站在巨人的肩膀上。当我们有幸于这巨人的目光惊鸿一瞥的时候,个人的羞怯和恐惧又算得了什么呢!

OI 学习的季节

我们看到,提高级开始每个年代内 OI 学术的学习中,时间的主要比例,都会经历从积累新知识到自行做题到有能力出题的演进,当演进到后段时,走向更高的年代就是水到渠成的了。

因此,可以将提高级开始的每个 OI 大年代——即提高、省选和进阶——分为两个季节:积累季节和推导季节。

OI 学术学习上的,小的瓶颈,大都是学习方式应当适应季节的信号。

积累季节

刚刚来到新的领域,你经常遇到不会的知识:算法、组合对象、数学基础。重点是积累知识,无论算法,数学理论的方法、技巧。特点是过题前思考少,做不出看题解多,过题后思考多。重点是过题后学新东西的消化理解,通过改编原问题,找类似题,找理解,自己不看题解推,做笔记等方式捕获和理解新内容并记录自己的认识。

推导季节

你已经熟悉大部分题解的前置知识,重点是积累推导能力,特点是过题前思考多,过题后思考时间一般,但还是要浏览题解和他人做法并维护自己的认识,如笔记。

重点是数学上总结问题的模型,动机,思路,技巧等。也就是机械化思考时可被使用的工具。

在推导季节逐渐发展成熟时,你将经常能够有理论认识。独立造出新题,概括某类知识完整的见解等。逐渐地,为了解决具体问题而学习、引入之后的知识将越来越频繁,你就自然推开下一年代的大门了。

笔记要义

这里所谈论的笔记,不是日常语言,而是专门特指上文中所说的记录维护自己对知识网认识理解的载体。它可能是几篇经常更新的专栏合集,可能是带有分类和一句话解释的做题记录表,可能是 Obsidian,可能是一个纸质本子,以及同时使用它们的综合。

这里所谈论的问题,不是泾渭分明,而是主要和次要的区分。实行主要的方面,同时不排除次要方面的补充。

问:笔记是纲要,还是档案?

答曰:是纲要。笔记必须有所侧重,要尽量简短,突出重点,而非求详求全的档案。重点是什么呢?其一是自己独立发现的部分,其二是自己感到困难的部分,其三是概括整体图景[overview]的部分。

另外,在例子关联方面是不能简省的,对于作者认为不同的例题、定理应用等,应广泛收录。对于作者意识到的关联知识,应广泛列出。

概括整体图景,对于例题来说是个人的一句话题解,对于理论来说就是整体推导动机乃至可枚举的推导技术、套路。

感到困难的部分,第一是初次遇到问题未能推出的困难,第二是学习后试图改编、推广遇到的困难,第三是概括理解的困难。概括理解的困难,就是说,假想我们用简单的语言和例子教入门者,不使用专业术语,只能从整体的图景和推导动机开始。在假想的教学中,如果遇到卡壳或无法解释清楚的地方,说明存在概括理解的困难。

费曼学习法说以教为学,就是这么一回事。实际学习中,不妨把假想的教学变为真实的讨论,乃至增加同学分享、互测命题、思考题研讨等兄弟形式。

问:笔记是程序,还是实行?

答曰:是实行。笔记写作是为了理解和维护自己的认识而主动采取的行动。

为了效率,笔记应当从简,应当突出重点,应当找高效的平台、体裁形成个人习惯。如果有想法,就要写;反之,如果没有想法,就不要写。就这么简单。然而,如果学各种知识都一直没有想法,学习方法一定出了大问题。

笔记不是形式主义。不能强求每个算法写一篇,每几天写一篇,数量只能是对自己的激励而不是目的本身。不要为了安慰自己而写,不要发布完全照抄做法的题解。对原题题解的翻译,乃至自行领会后按相同思路独立推导是有益理解的,但照抄和复制不能。

因此,教学时即使必须有量化指标也应当宽松,并且允许各种不同的形式,乃至讲课、互测、思考题研讨等替代形式。否则危害极大。

问:笔记是填充,还是迭代?

答曰:是迭代。笔记是从 1\% 正确 99\% 错误的完整表达开始改进,而非填充了 1\% 而空余 99\% 的真理进度条。当我们有新的深入认识后,应当立刻改进笔记中对应的局部或整体。

任何时候,都不要追求笔记的完美。人所知越多,就越发现自己的无知。在文明之内和世界之外,你总能找到无数看起来更精妙的理论,无数反例和剩余,永远不缺对自己的笔记自惭形秽的理由。

笔记应当忠实地记录下你追求片刻完善后的暂时想法。不要因为无知就不写,不要因为前人或资料写得更好就不写,不要等待那个不可能到来的完美。完整的稚嫩会在不断改进中迸发出火花,而完美的残片永远也只是死寂而已。

问:笔记是科学,还是抒情?

答曰:是科学。笔记有抒情诗歌和散文闲话,但不能只有这些。

笔记不能是似是而非的呓语。这就是说,笔记的每个概念必须是数学上可以明确举例的。有些人说贪心题目是这个思想、那个思想,NOIP 命题是这个原则、那个原则,结果自己做不出来,也没法给别人说清楚究竟思想是什么,这叫什么思想呢!贪心确实有自己的理论结构,有最优性证明的调整法和其它组合推导,有局部交换、局部合并、松弛、微元,有反悔贪心及网络流、拟阵等模型,有凸优化。所有这些都有从简单到难的例子和准确的数学概念,能够明确举出反例和局限,能够实际学习应用。

浑天、原子、以太,充满诗意和哲思,但以文辞同学术混为一谈者,可以休矣!

问:笔记是个人写作,还是公众教材?

答曰:是个人写作。笔记必须是不整篇参考,独立写下自己的理解。决不能因为前人写得更好就大段复制它们,你只能在理解它们后自行表述。

不过,在学习较深入后,可以把笔记扩展成公众讲义博客,那时写作者足以对一个专题形成总体图景。之后就要追求完整,追求引入推导自然、概念准确、总体理解深入、例子全面和有代表性、引用关联完善。并在未来有新认识后继续改进。

拓展阅读

往期内容

教研讨论

笔记示例

OI 学习的实际笔记示例。笔记是个人理解的简要写作,是个人的,是内容胜于形式的,是需要在有所领悟后不断更新迭代的。是不能因为觉得自己理解浅薄或独特就不去动手的。

友情链接

个人著作权声明:严禁任何未经本人(刘承奥,常用笔名/网名:蔡德仁 CommonAnts LCA liu_cheng_ao)书面授权者在梦熊联盟,或者任何虚假宣传或不实营销炒作或不正当竞争行为严重的 OI 机构的课程内或交流平台(包括但不限于品牌集训线下讨论,交流群,OJ,公众号,视频号等)上引用、传播、讨论此内容,以及本人于2024年5月及之后发布的所有内容,包括声明为公开的内容在内。