作者:zx2003 https://www.luogu.me/article/2efe2uqy

谈一下我关于OI的一些经验与想法吧,会谈的比较零碎

OI的三种能力

一般认为OI的能力分为三类,知识、码力、思维。大致而言,一般认为知识是指考试开始前就已经掌握的,思维指场上现想的东西,码力指将前两者翻译为代码的能力。

想要真正掌握并灵活运用知识,一定的思维能力是必不可少的。如果发现超出理解能力了,建议不要强行记忆,可以先放弃该知识转而先学习其它东西。虽然我感觉很多”理解不能“的情况是OI发展程度不够,没有好的讲稿或者你没有好的讲稿造成的。

学习知识点最好注意系统性,与其它知识的相关性,搜索资料时优先寻找系统性较强的博客、讲稿、题单的话,因为理论更完备更清晰,与其他领域相关性更强的知识体系,更易于被掌握,被深刻理解。有时候甚至会出现做5道题的学习效率不如做10道题,尽管受OI发展程度所限,我常常遇到后5道题半年后才做到的情况。

思维的话,主要是充分调动运用所学知识的能力。如果是以锻炼思维为目的地做题,可以适当延长思考时间,尽量充分尝试地尝试自己想到的道路并加以完善下去。当然思考时间也不要太长,最好避免没有任何思路的空转,可以适当瞄下题解或std获得提升;以及有时候想不出来并不是单纯的思维能力问题,对于经常出现又难以独立发现的思维中间产物,如果系统性不够被称为知识,我们会称之为技巧、模型,或者”套路“。

严格来说代码能力也算思维能力的一部分,但训练上会有些差异。特别是OI是个写代码的比赛,编写代码的准确度与速度,程序的运行常数这些也是需要注意的。对于一些常见的代码组件或者模板,可以多写几遍形成肌肉记忆提高手速。可以多阅读学习其它人的优秀实现,学习好的代码思路,但是抄代码没什么意义。也可以在不同题目上多尝试不同的实现方式,增加写过的本质不同代码数量。

关于科技

经常可以看见OI社群中提到这个词。

严格来说科技属于知识,但是其本身又有特殊性。

左侧是OI已有知识,右边是未引入OI或未被人类得到的知识,中间那条是OI的前线,这些年来一直呈向右扩张的趋势,这里称之为科技,是普及度还不够高下沉度还不够的、新产生的知识。这里提到的科技,更多是关系那些成体系的,并且呈开放态势不断发展的新知识,孤立的小技巧不在考虑范围内。OI里知名的有专门的人在做的科技领域,有数据结构与计数。组合优化其实也引入或发明了相当多足以构成体系的知识,但好像OI界没啥人做。

有的时候也把成体系而不一定新的知识,或者仅仅发言者个人不会的知识称为科技,但我觉得这些含义并不贴切故不在此讨论。

总的来说,我个人是比较喜欢科技的,一方面是更容易进行创造性活动,带来比做题更大的乐趣;另一方面这种探索新知的精神已经事实上成为了OI特别是CNOI不可或缺的一部分。

随着时间推移,中间那条前线上的科技并不仍然被称为科技

  • 可能因为普及度足够高而变为一般的知识点,例如2014年还能出现在ZJOI的FFT,现在可能只是noip级别了。这种算是good ending。

  • 可能因为普及度太低,没有后人来学习掌握并加以传承,失传了,例如sone3。这种是bad ending,我觉得被后人遗忘了会削弱当初引入科技的意义。

  • 可能被后来的科技完美替代,后人不再记得前人是如何使用该科技解决问题的,从而被逐出OI界了,例如多年以后大家都写 新的线性递推方法 而忘记了从前写线性递推是要会多项式取模并使用各种奇淫技巧优化常数的。这是true ending。

从上述第三条也可以看到,科技并不总是产生具体的新知识解决了新问题,也可能只是对旧知识的整合,带来了更好更灵活的理解方式,更利于传播,有助于选手更好地理解相关问题,提高学习效率,(甚至可能可以)减少学习时间。另外一个例子是我的集训队论文的例题1,以一敌四。

不过总的来说,关于科技的学习,既然是处于前线上,学习的是尚未完备封闭的知识,就很容易缺乏好的讲稿好的理解方式好的学习路径好的使用或练习场合,有时学完后甚至需要一些创造性思维来创造使用场合,所以学习科技和学习知识的过程是存在差异的,一般来说单位科技的学习成本会更高,如果考虑到学完后考试不考的机会成本,甚至可能高得离谱。

不同学习来源渠道的差异

CF

比赛多题目多,覆盖的知识面较广,短时间快速思考并准确实现也比较锻炼思维与代码能力。

刷的人也多,意味着里面的技巧/套路如果没有掌握,相对于竞争对手的劣势也会更大。

由于多为2~3h的比赛,意味着训练节奏比5h的OI赛事更快,相应的训练成本(占用时间)也更低,建议基本知识学完后优先把CF rating刷高点,能力提升速度会比较快。

个人感觉现在集训队基本对应2600~2700的cf rating,Ag大概要2300~2400。

当然5h的OI比赛会有更多的深思维长代码的题目,还有(CN)OI专属的知识点,要正确认识这一点,cf rating也只是个OI水平参考指标。

ATC

ARC的话大致相当于cf div1.5。

AGC的话虽然也是2~3h的比赛,但是平均思维难度比cf高不少,甚至高于很多(CN)OI比赛,不过现在CNOI也有向思维能力倾向的趋势。AGC题目数量比较少,只是单纯做里面的题,不会就看sol的话,很容易出现刷完了39场第40场还是不会的情况。如果做起来吃力,建议可以先弃做AGC,做点ATC上的其它比赛如ARC,或者其它这种日系风格的题目如JOISC。

洛谷,loj

量大管饱型的OI题库,有点类似于传统意义上bzoj的地位,可以用来提升OI综合水平,学习套路,锻炼码力。一般认为loj高端点洛谷xxs多点,我觉得影响不大。

两者都有各自的社区风格以及种类繁多的OI题,也都有些高端题。洛谷有托管ynoi,有不定期举办的各种比赛,虽然参差不齐但有些题目质量还是不错的;loj有很多外国题,还有一些国内OIer自行上传的套题或散题可以一看。

uoj

高端题库,高端社区讨论平台,包括其博客系统与用户群。

如果要刷uoj的话最好有一定基础水平,特别是uoj比赛题,考虑到其题目数量也比较少,其实跟AGC有点像。

CC

我基本只做过long challenge,感觉类似于印度版的综合型题库,总体上比较偏套路,challenge可以练习乱搞提答能力,最后一题经常偏科技,可以选做一下。

集训队作业

好处是有详细的中文题解,坏处是每年画风都不太一样,有的年份可能难度偏高不适合水平不够的选手做,有的年份则题风诡异,几何模拟横行,与(CN)OI相去甚远。

模拟赛

质量良莠不齐,一般来说都会有所取舍地做。但建议考试的时候还是努力做以达到模拟效果,因为5h的OI考试经验获得成本很高,你需要抓住机会增进对自己思维敏捷性、代码准确度这些的了解与把握,减少正式比赛中的风险。考后补题尽力而为,我是倾向于认为,即便是不太可能考的知识,对于锻炼思维和码力也是有帮助的。

VP

一般指CF/CFgym/ATC上虚拟参加在线比赛的功能。

如果不想熬夜又想通过练习真实比赛刷cf rating,VP是很有帮助的。

即便是一直在熬夜打正式比赛的,也可以通过VP以前的场增加训练强度,否则单靠正式cf Round强度其实不一定够。

讲课

我个人是不太习惯听课,小课有互动的还好点,大课更不适,感觉看文档更舒服,更容易把握节奏。

博客,讲稿,论文

使用前建议多找几个相关题材的对照着看,便于理解。

社群

经常有活跃的高水平人士出没,建议善用社群,实际上这是一门学问。我个人其实不太善用社群特别是私聊。