如果你想参加算法竞赛的建议越早越好。大一或者更早就需要准备起来了。如果你已经快毕业了,那就没有必要准备了,当做兴趣参加一些力扣的比赛也是不错的。
题库
算法面试的考察内容相比算法面试更多,难度也更大。比如数位 dp,倍增,乘法逆元都需要掌握。而这些内容在算法面试中出现的却不多。
题库的话有很多 OJ 网站。但是题目都太多了。
这里推荐两个网站,一个适合竞赛选手,一个适合普通求职者。
CSES 这个网站比较适合竞赛选手,题目有 300 道,刷完还是比较快的(相对于其他老牌 OJ 平台),地址:https://cses.fi/problemset/
另外一个是 BinarySearch。用户体验做的很好,题目难度和力扣差不多,难度波动感觉比力扣小一点点,地址:binarysearch.com/
练手比赛
姑且先推荐三个平台吧。
其中一个是 codeforces, 这个参与竞赛的人知道的比较多, codeforces 是全球范围内每次比赛参加人数最多的竞赛平台。普通人可能不太知道。这个网站的比较难度偏大一点,质量也更高。打过的人都知道。
第二个是 Leetcode。这个大家可能听说过。目前力扣有两种赛事。
- 周赛:每周日早上 10:30
- 双周赛:每两周一次,北京时间周六的晚上 10:30开始
力扣的难度比较入门,适合新手。不过难度波动其实也不小,难度低的时不时是手速场,难度高的话只要能做出来(即使是卡点做出来)都能进前 100。
最后推荐一个是 Google 比赛,有三个等级。
- Kick Start:新手入门级,也是Google面试的敲门砖,每年举办八轮。
- Code Jam :Google的王牌赛事,也是最重要的赛事,分为资格赛、A轮、B轮、C轮和决赛。决赛每年有25个名额。
- Hash Code:一项团队赛,与一般编程竞赛不同,赛题一般为没有最优答案的优化问题。分为资格赛和决赛两轮。
学习网站
OI wiki 是一个内容比较全,深度也覆盖比赛的网站。里面的内容大概看了下,大部分不错,少部分是从网上抄的,质量也一般。如果你有一定的鉴别能力,这个网站是非常不错的。地址:https://oi-wiki.org/
比如图论的 OI-wiki 目录是这样的:
CP-Wiki 是个人的 Competitive Programming 学习资料总结。里面不仅有各个知识点的总结。
知识总结是大纲性质的,比较简略,适合拿来查缺补漏。
而且还有各个比赛的题解,强烈建议学习竞赛的你收藏。
学习图书
《算法竞赛进阶指南》
推荐阅读李煜东的《算法竞赛进阶指南》。他有丰富的参与竞赛以及培训竞赛的经验,同时他也是 Google 的工程师。
李煜东曾为NOI系列竞赛、NOI导刊培训基地以及全国各地多所学校的选手授课,并在网络上组织模拟赛数十场,经验丰富、讲解透彻、广受好评。多次协助石家庄市第二中学的信息学竞赛集训工作,参与北京大学“数据结构与算法”、“算法设计与分析”的课程教学、考试命题工作。
豆瓣评分 9.1 ,群众的眼睛还是雪亮的!
这种书在算法竞赛中知名度还是很高的。你如果准备算法面试的话可能听说过。 如果没有听说过,现在不妨买来看看。
附上这种书的目录给大家:
1 | 0x00 基本算法 |
如果你不打算参与算法竞赛,我也建议你买过来看看,不过内容可以选择性看看即可。如果你也不知道应该看哪部分,可以在我的交流群中进行讨论,公众号力扣加加回复 leetcode 进群。
《Guide to Competitive Programming》
《Guide to Competitive Programming》这种书我自己没有读过。不过听朋友说内容不错,大家可以试读一下,看看目录是否适合自己。
BTW,前面提到的题库网站 CSES 也推荐了这本书哦。
总结
大家如何想参与算法竞赛尽量趁早,建议至少从大一就开始学习。
建议大家卖一本书系统性学习,然后找个题库跟着刷题。题库刷完之后再去参与比赛。比赛完成后可以看下大家的题解,不管自己有没有做出来,做出来也看看别人的做法是不是更好。经过这样的一条完整路线,我相信大学期间拿个名次,进个大公司还是不成问题的。当然进大公司还要其他方面也不差才行 😄