《挑战程序设计竞赛》推荐及算法相关书籍吐槽

前几天,秋叶拓哉(iwi)、岩田阳一(wata)和北川宜稔(kita_masa)所著,我(watashi)、庄俊元(navi)和李津羽(itsuhane)翻译的《挑战程序设计竞赛》,终于通过人民邮电出版社正式出版了。可喜可贺,可喜可贺。有关该书的简介,目录、试读和购买链接请通过传送门访问。这里我主要想说一下自己为什么要翻译和推荐本书,还有对程序设计竞赛学习资料的一些看法。也附带一些对译者序和第1章的补充说明。

在译者序中我也略谈到了自己翻译此书的动机。和很多读者一样,最开始当然是奔着作者的名头去的,三位作者不但是国际知名的选手,而且TopCoder的最高rating加起来都破9k了。顶尖实力的作者往往可以站在更高的高度指点江山,也就更可能写出一本好书。随后就是读到书中的内容了,书中的绝大多数东西,我大概都在过去四五年时间的摸爬滚打中,逐步通过各种书籍、网络、道听途说、解题经验和总结体会掌握了。不过还是有一些耳目一新的内容,其中有一两个问题还是通过邮件得到了原作者的解答,涨了姿势。但仍有一种相见恨晚的感觉,假如自己早两年读到此书,想必能少费不少劲。从我个人的经历和对周围同学的了解来看,这是一本非常值得引进和推荐的书。

当然,在此之前国内已经出版有不少算法竞赛相关的书籍了,很多人想必希望知道这本书有什么特别之处。算法竞赛相关的书籍大致有两类,一类是算法和数学类的书籍,比如各种数据结构教材、离散数学教材、《算法导论》、《具体数学》等,一类是专门针对算法竞赛的书籍,其中的代表就是刘汝佳所著的几本书,而《算法艺术与信息学竞赛》(黑书)又是其中的代表。作者之一的iwi在MSRA实习期间也得知了黑书的大名。

首先,个人觉得这些书籍大致可以分为两类:教科书和工具书。诸如《数据结构与算法分析》(DSAA)之类的书可以作为教科书的代表,而诸如《计算机程序设计艺术》(大名鼎鼎的TAOCP)则毫无疑问是工具书的代表。大致地说,前者简单易懂,适于学习,后者高深全面,适于参考。二者并没有明显的分界线,很多时候全凭主观,因人而异。比如说,看懂了,这就是教科书,看懂目录了,这就是工具书。当然,和数学沾边越多的书,总是越难啃的,所以就难度而言,这类书籍和编程语言类书籍自然是没有可比性。

许多书都作为程序设计竞赛的学习资料被反复推荐,但事实上,我们大概可以仿照《最常被程序员们谎称读过的计算机书籍》写一篇《最常被ACMer们谎称读过的书籍》的吐槽文。里头有一句话很重要,所以我再抄一遍:“如果你自己没有读过这些计算机书籍,请不要推荐给别人”。当然,像《算法导论》这样的书个人觉得还是值得一读的,多数的章节并不难,可以当作教科书,后面的一些内容可以作为工具书需要时再参考,里面很多东西讲的很细,容易做到真正的理解吸收,比如从自动机引出KMP等等。而TAOCP则无疑是最常躺枪的装逼神器。有一天,我在同学的桌上看到一本TAOCP第一卷,打开一看很黄很暴力,我赶紧就把它盖上了。TAOCP很厉害,看exponentiation by squaring能引用到它,看permanent也能引用到它,连看数え上げお姉さん都能引用到它。读完TAOCP那必须能变得超厉害了,可那得是能读完啊,读不完说啥都白搭。所以推荐学习资料不能光看书好不好,还得看对目标人群合不合适。而一本好的教科书,不应该是尽可能体现作者有多牛,而是要能够尽可能简单地帮助读者变得更牛。如果看完了,懂的还是懂,不懂的还是不懂,那是没有意义的。

按照这个分类标准,个人觉得《挑战程序设计竞赛》是一本很好的教科书。它非常的适合作为有志参加程序设计竞赛的同学自学,或是正在学习数据结构与算法分析的读者作为练习和拓展的参考书。该书将不同的主题按难度分成了三部分,循序渐进。作为教科书,其一个明显的特点是,几乎没有外链,把每个的主题都讲得很清楚,便于读者理解。多数题目附有核心代码,代码风格也不错,而且讲解的时候会附带一些思路的说明和方法技巧的总结。它在正文中详细完整的介绍了在程序设计竞赛中最重要的知识和思想,全书涵盖了在绝大多数题目中所会用到的知识和思想。而对于拓展内容则以补充说明或是附录的形式给出,并未多做介绍。这样的好处是该书很连贯,结合练习容易完整掌握,并突出了对大多数人而言更为重要,应该多花力气的地方。

在此举几个例子。书中介绍一般图匹配的时候并没有介绍经典的带花树实现,而是介绍了利用Tutte矩阵求匹配数的随机算法。因为要在书中真正把带花树的实现给读者讲清楚很困难,而对Edmonds算法的介绍资料也很多。在介绍后缀数组的时候,用的也不是线性算法,因为后缀数组最重要的是理解其性质和应用,而求后缀数组往往是模板的工作。在介绍字符串上的动态规划算法的时候,没有介绍KMP算法和Aho-Corasick算法,而是用暴力的方法求出了二者所对应的状态和转移,事实上这反而更有助于真正理解KMP算法和Aho-Corasick算法。

另一方面,如果你是想要学像弦图、动态树、Dancing Links(DLX)之类的高深玩意的话,这本书对你就几乎没有任何帮助。当然,说到DLX,我不知道为什么国内会曾经有一段时间盛行出DLX的题,题目的规模大得惊人,能AC的原因却是因为数据太水。真正理解DLX的人应该明白,这本质就是一个常数优化的启发式搜索,并不能改变问题本身的困难程度。从某种意义上说,在把基础搞扎实前,还是少折腾这些高深玩意比较靠谱。

相比较而言,刘汝佳的《算法艺术与信息学竞赛》则介于教科书与工具书之间。书中按专题介绍了了相当多的知识,从头到尾许多小节都涉及到非常难的内容,还有一些神题。书中所提及的算法和数据结构要比《挑战程序设计竞赛》多得多,特别是计算几何部分要更为系统详细。书中包含有大量的外链,非常可惜的是OIBH早在多年前就挂掉了。书中对很多问题进行了总结归纳,但不都有详细的讲解介绍,对于身经百战的读者很容易找到共鸣,但对于其他读者而言,恐怕读起来就不那么轻松了,很多地方需要自己钻研,另找资料学习。黑书是可以多读几遍的书。起初可以在短时间内接触大量的算法和技巧,然后通过其他资料学习。遇到某个有印象的问题,或时隔一段时间后,可以再翻开看。慢慢地,就会对书中越来越多东西有共鸣了。

当然,从最初阅读《算法艺术与信息学竞赛》,到去年翻译《挑战程序设计竞赛》,我自身的实力也已经不可同日而语了。所以上面对于两书的评价,当作两个不同的人做出的应该会更为客观一些。

冰冻三尺非一日之寒。虽然书中的内容已经足以让读者的rating冲上2500,但真要达到2500的实力却还离不开充足的训练,通过实践把书中的内容真正化为己有。另一方面,训练的方法也是很重要了,好的方法能够做到事半功倍。正如《挑战程序设计竞赛》最开始所说的:程序设计竞赛是综合了以下两个要素的复合竞赛:

  • 设计高效且正确的算法
  • 正确地实现

并且,为了设计算法:

  • 灵活的想象力
  • 算法的基础知识

也是必不可少的。平时训练过程中切莫顾此失彼。


Q&A

Q: 能找作者/译者签名么?

A: 如果我们有机会见面的话,而且你居然还不嫌我的字丑的话,是可以的。由于我和另外两位译者马上就要分处三个不同的城市了,能不能集齐就得看RP了。如果你参加今年的TCO的话,我们到时候还可以去搭讪iwi和wata要签名。

Q: 卖出一本书你能抽成多少?

A: 0. 我们拿的是一笔稿酬。所以如果你买书的目标是给我钱的话,不如直接一点,打开支付宝。我会很开心的。

Q: 为什么黑Knuth?

A: 呃,虽然文中黑的两个东西全是Knuth搞的,但我绝无黑Knuth的意思,恰恰相反,我黑的是那些亵渎Knuth作品的人。比如建议你想要进某社先把TAOCP读个几遍啊,或者把DLX当万金油使的这类人。

Q: 《具体数学》怎么样?

A: 说来这又是Knuth搞的东西?《具体数学》可以算不怎么简单的教科书。里面许多内容还是可以看得津津有味的,但是有些地方就看着有点费劲了,里面那两页求和公式“简单的例子”当初可看死我了。《具体数学》系统地介绍了许多有用的数学工具,当你遇到过几类数学相关的问题,并开始觉得自己不会数数,不会算概率的时候,就很有看一看的必要了。

Q: 更上一层楼的练习方法。

A: 《挑战程序设计竞赛》也有这么一段,这里做一个补充。一是近年来Codeforces得到了很大的发展,其功能丰富,用户群也很大,是一个很好的练习平台。二是SGU也是一个老牌的OJ,其题库比较精简,且质量比较高,不会像其它OJ有刷不完的题,因此比较推荐。学习算法的时候,可以找一些相关的题做,巩固知识。练习的时候,不应该跟着解题报告做题,而是要尽量独立思考,否则“灵活的想象力“恐难有提高。同样的,不要在“神模板”和“神题”上走火入魔,而忽略了“算法的基础知识”。

转自:http://blog.watashi.ws/2382/pccb-etc/

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

截至美东时间周二上午8点,US Open赛结束,至此,USACO 2019-2020赛季正式落下帷幕。满分同学会当场晋级,没有当场晋级的同学可以耐心等待一周之内出成绩。

铂金级满分通过记录(最高级别

【福利】独家首发USACO 3月赛US Open全部组别赛题解析
【福利】独家首发USACO 3月赛US Open全部组别赛题解析
【福利】独家首发USACO 3月赛US Open全部组别赛题解析

本次US Open赛事题面非常与时俱进,奶牛的世界也爆发了新冠病毒COWVID-19,如有的让你帮忙计算社交距离,有的让你帮忙追踪0号病人(牛),出现了不少高质量的题目。更多内容,请参考下文解析。

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

以下内容是四大级别的赛题解析,供同学们参考交流。想要咨询参赛和备考冲刺计划的同学,可以扫描文末二维码,添加老师微信获取。

 

(题解内容为图片,可点击放大查看)

 

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

01 Social Distancing I

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

02 Social Distancing II

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

03 Cowntact Tracing

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

01 Social Distancing

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

02 Cereal

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

03 The Moo Particle

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

01 Haircut

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

02 Favorite Colors

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

03 Exercise

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

01 Sprinklers 2: Return of the Alfalfa

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

02 Exercise

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

03 Circus

题目大意

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

题目解析:

【福利】独家首发USACO 3月赛US Open全部组别赛题解析

2019-2020赛季

往期题解

【福利】全球首发USACO Dec月赛全部组别试题解析

【福利】独家首发USACO 1月赛全部组别试题解析

【福利】独家首发USACO 2月赛全部组别赛题解析

USACO 2020 US Open赛题解析

 
截止到今晚8:00

USACO 2020 US Open已经结束了,

不知道同学们考的怎么样呢?

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

理工君第一时间帮大家整理了
这次竞赛的赛题以及独家解析
文章末尾还有完整版的赛题参考代码
希望对Farmer John和他的Bessie,
以及你们(当然最重要的是你们)
有所帮助!
 

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

Bronze赛题

01

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
这道题我们将所有的空隙挖出来,考虑所有的情况即可

02

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
首先我们要找出题目中R的最大值

R表示疾病的传播半径 如果两个人距离小于R即会被传染

我们发现如果相邻的两个人 一个人传染一个人不传染 那么R不应该大于这两个人的距离

当求出最大的R以后 我们即可求出答案

03

 

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
枚举零号感染者和K即可

Silver赛题

01

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
经过观察 我们发现题目所求的D具有单调性

即D越小越容易符合题意

二分答案即可

02

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
我们从后往前插入

然后每个数只会挪动两次位置

所以总体复杂度O(n)

03

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
我们按将x和y从大到小排序

然后确保了 后出现的x更小

然后进行块合并即可

Gold赛题

01

 

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
我们从小到达的插入数据

我们发现 当我们插入一个数时 前面还没有插的位置 此后一定比当前数大

所以使用树状数组统计即可

02

 

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
这是一个并查集问题

我们发现一个点的儿子都需要合并

我们假设x y需要合并 那么他们的儿子也需要合并 这个过程时O(n^2)的

我们可以用类似spfa的技巧将这个过程优化到O(n)或者启发式的思想优化到O(nlog(n))

03

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
考虑每个素数的贡献

计算答案即可

 

Platinum赛题

01

 

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
我们发现一个我们的轮廓线每弯折一次 那么就会有一个点被确定

我们dp即可

我们设计dp[i][j][0..1]的状态

dp[i][j][0] 表示从dp[i – 1][j]即从上面转移的方案数的和

dp[i][j][1] 表示从dp[i][j – 1]即从左边转移的方案数的和

进行转移即可

我们在状态中只考虑当前轮廓线的最后一个点和到达最后一个点的方式

通过这样的方式消除前效性

02

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
赛题解析
USACO 2020 US Open赛题解析|Farmer John说让你点进来看看
对于一个排列,循环节为t,出现p次,贡献t^p,因此目标是统计每种循环节的出现次数

由于循环节范围太大,对t分解质因数 t = p1^q1 * p2^q2 * … * pk^qk 贡献可以分解成质因数p的q次方的贡献。

p的q次方的贡献 = q次p的贡献  因为p^q除1外刚好q个约数,可以等效算q次p的贡献

统计循环节是p^q倍数的排列数 = N! – 循环节没有p^q倍数的排列数

循环节没有p^q倍数的排列数 可以用动态规划解决

03

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

USACO 2020 US Open赛题解析|Farmer John说让你点进来看看

 

信息学奥赛NOIP,USACO参考图书

  • 刘汝佳系列
  • 《算法竞赛进阶指南》- 李煜东
  • 《啊哈算法》- 纪磊
    面向初学者或有初步兴趣的人群,有幽默配图。
  • CCF 中学生计算机程序设计系列
    • 《CCF 中学生计算机程序设计 – 入门篇》- 陈颖,邱桂香,朱全民 建议配合勘误使用。
    • 《CCF 中学生计算机程序设计 – 基础篇》- 江涛,宋新波,朱全民
    • 《CCF 中学生计算机程序设计 – 提高篇》- 徐先友,朱全民
    • 《CCF 中学生计算机程序设计 – 专业篇》(未出)
  • 一本通系列
    • 《信息学奥赛一本通》- 董永建
    • 《信息学奥赛一本通 – 提高篇》- 黄新军,董永建 建议选择性阅读。
    • 《信息学奥赛一本通 – 高手训练》- 黄新军,董永建
  • 其他由国内著名 OI 教练写的教材
    • 《信息学奥赛课课通》- 林厚从
    • 《聪明人的游戏:信息学探秘 – 提高篇》- 江涛,陈茂贤
    • 《计算概论:C++ 编程与信息学竞赛入门》- 金靖
    • 《算法竞赛宝典》- 张新华
  • 《算法竞赛入门到进阶》- 罗勇军,郭卫斌
  • 《算法导论》第三版 – Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein 黑书,大学经典教材。英文版原名_Introduction to Algorithms_
  • 《具体数学》第二版 – Ronald L. Graham/Donald E. Knuth/Oren Patashnik 英文版原名_Concrete Mathematics_
  • 《组合数学》第五版 – Richard A.Brualdi 英文版原名_Introductory Conbinatorics_
  • Competitive Programmer’s Handbook
  • 《挑战程序设计竞赛》全套 – 秋叶拓哉,岩田阳一,北川宜稔 通俗易懂。
  • 《算法概论》- Sanjoy Dasgupta/Christos Papadimitriou/Umesh Vazirani 提纲挚领,但内容较少。
  • Legend-K 的数据结构与算法的笔记
  • acm-cheat-sheet
  • Competitive Programmer’s Handbook – Antti Laaksonen 作者花了三年个人时间完成。面向算法竞赛,覆盖面广,详略得当。

比较典型的例子大概是《算法竞赛入门经典:训练指南》(以及本篇第二版的最后一章)《算法竞赛进阶指南》。*CLRS* 有必要看吗?我想是没有的。倘若在意细致的代价分析,看《具体数学》就足够了,数论、组合数学和动态规划顺带也一起学了。*TC++PL* 呢?如果你在意 STL、algorithms 的复杂度,第四部分:标准库可以当作 cookbook。这样一本暗示你具体实现较少的书,以及它适用的版本,我觉得都是比最流行的 Primer Plus 第六版好的。
现在网络上的资源是很多的。hzwer 发起的的 shareOIOI WikiLojUoj、洛谷的集训队 50 题。这些是集合的比较有趣的。比 *CPC 的资源有序得多。

这些就足够了。它们足够深入浅出;足够连续、也足够离散。

最最入门的书我推荐《计算概论》,华东师范大学第二附属中学的。

NOIP学习方法, USACO资料整理收集

刚入坑的oier容易不知道玩什么,怎么玩,(尤其是单机OI的弱校/kel)…
学一些基础的算法之后,从最近10年的联赛题开始做,不会就学,是一个很好的做法(记得跳过所有和高精度有关的东西)….不过对于我这种智商不足的选手而言可能比较麻烦….
线上的教学,我可以说(免费获取的)效果都不好,我曾经初三/高一的时候尝试在学堂在线上面跟着数据结构mooc学习,去coursera上面找大名鼎鼎的algorithms的教学视频学习,但是它们的节奏,与内容结构完全不适合OI初学者,有了一定的水平之后听课比起看书就是浪费时间….可以试试B站上面找UESTC算法讲堂,但是没有特别基础的教学,并不是手把手拉人入坑的,而是帮助对文字理解能力不足的选手克服学习障碍的.

传统路线吧,买一发LRJ的紫色+蓝白书,买一发LYD的《qwq指南》…然后开始学.LRJ的紫色书(叫算法竞赛入门经典)还是很系统的,难度也挺友好的,花上半年时间应该是刷完没问题吧QAQ,没必要做完上面的所有题目,但是例题是一定都要写的.LYD那本书的话更贴近现在真实的NOIp,推荐所有例题都写.书中对于一些刚入坑容易产生恐惧感的数据结构/网络流建模有些基础的介绍,让人知道现在OI是个人就得会hld,就得会dinic,就是得学,而且只是有个初步了解,写点经典应用完全不难….

如果没有指引的话搞竞赛很容易跑偏的,尤其是在没有升学压力的情况下。入门就用lrj的《算法竞赛入门经典》,非常简明易懂…配合USACO多刷题别只看书…C语言的话看到指针就可以开始做题了…其实很多时候都能用数组解决…别去OJ上刷水题.

联赛一等奖是比较简单的——至少和前几年比起来,暴力就足以帮你轻松拿到一等。学习了基础语法后,其实就可以去学习需要掌握的基础算法,然后做题就行了。学习新算法的一种途径是看书,比如现在主流推荐的《算法竞赛入门经典》、《挑战程序设计竞赛》,任选一个就好;答主曾经看过一本叫做《啊哈算法》,虽然讲的内容较浅不太适合应试,但是内容很有趣,如果当做算法入门来构建思维也是不错的。当然,更多的内容还是要靠网上博客,包含对于各种算法的理解,还有海量的题解。

剩下的只有做题了,慢慢积累不同的思路、实现,培养一种思考题目的方式。许多OJ上可以做题,如果目标是一等奖的话,有luogu、codevs、vijos等等,这些上面都有历年联赛原题;美国usaco的题目质量也很高,难度恰好从普及组覆盖至比省选低,当然国内许多OJ已经有翻译了;国外的codeforces,topcoder,atcoder,codechef等比赛平台也有很多好题,可以做上面较简单的题;如果有精力在奇怪的时间打比赛的话,可以试试这些比赛的div2。

许多题目都在网上有许多题解,对于题解不同的人有不同的用法,对于不会的题直接看题解学习也不失为一种学习方式,当然还是建议先多思考。

慢慢刷题的话,按照难度顺序,一步一步来吧。

如果是没有竞赛环境的话,那么可以考虑加入一些群,比如uoj,loj群,虽然学术风气日下毒瘤风气日增,而且对新人略不友好,但是相信题主能在这些地方得到一些答疑和指导,更重要的是能看到一个全新的世界。

信息学是一个高度依赖自学的竞赛,而且一等奖的要求确实不算太高。题主有兴趣的话,就已经具备了一个很重要的条件了

真题库

https://ac.nowcoder.com/acm/archive

资料网站 https://oi-wiki.org/

在线课堂 https://www.eeo.cn/cn/