If you want to participate in the algorithm competition, the sooner the suggestion, the better. Freshman year or earlier, you need to prepare. If you are already graduating, there is no need to prepare. It is also good to take part in some hardcore competitions as an interest.

<!-- more -->

Question Bank

Algorithmic interviews have more content and greater difficulty than algorithmic interviews. For example, digital dp, multiplication, and multiplication inverse elements all need to be mastered. However, these content does not appear much in algorithm interviews.

There are many OJ websites for question banks. But there are too many questions.

Two websites are recommended here, one for contestants and one for ordinary job seekers.

CSES this website is more suitable for contestants. There are 300 questions, and it is relatively quick to finish (compared to other old OJ platforms). Address: https://cses.fi/problemset/

The other is BinarySearch. The user experience is very good, the difficulty of the topic is similar to that of Likou, and the fluctuation of difficulty feels a little bit smaller than that of Likou. Address: binarysearch.com/

Practice game

Let me recommend three platforms first.

One of them is codeforces. People who participate in this competition know more about it. Codeforces is the competition platform with the largest number of participants in each competition in the world. Ordinary people may not know. The comparison of this website is a bit more difficult and the quality is higher. Everyone who has been hit knows.

The second is Leetcode. You may have heard of this. There are currently two events in Lidou.

  • Weekly competition: every Sunday morning at 10:30
  • Bi-weekly competition: once every two weeks, starting at 10:30 on Saturday night Beijing time

The difficulty of Likou is relatively entry-level, suitable for novices. However, the difficulty fluctuation is not small. The low difficulty is hand speed field from time to time. If the difficulty is high, as long as it can be made (even if it is made by stuck points), it can be in the top 100.

The last recommended one is the Google competition, which has three levels.

  • Kick Start: Entry-level for novices, is also a stepping stone for Google interviews, holding eight rounds every year.
  • Code Jam: Google’s ace event, and the most important event, divided into qualifying rounds, round A, round B, round C and finals. There are 25 places in the finals each year.
  • Hash Code: A team competition, different from general programming competitions, the competition questions are generally optimization questions without the best answer. Divided into two rounds of qualifying and finals.

Learning website

OI wiki is a relatively comprehensive website with in-depth coverage of the competition. I probably read the content inside. Most of them are good, a few are copied from the Internet, and the quality is average. If you have a certain degree of discrimination, this website is very good. Address: https://oi-wiki.org/

For example, the OI-wiki directory of graph theory looks like this:

CP-Wiki is a summary of personal Competitive Programming learning materials. There is not only a summary of each knowledge point.

The knowledge summary is of outline nature, relatively brief, and suitable for checking deficiencies.

And there are also solutions for each competition, it is strongly recommended that you who study the competition collect it.

Study books

"Algorithm Competition Advanced Guide"

It is recommended to read Li Yudong's "Advanced Guide to Algorithm Competition". He has rich experience in participating in competitions and training competitions, and he is also an engineer at Google.

Li Yudong has taught the NOI series of competitions, the NOI guide magazine training base, and many schools across the country. He has organized dozens of simulation games on the Internet. He has rich experience, thorough explanations, and is widely acclaimed. She has assisted in the training of informatics competitions in Shijiazhuang No. 2 Middle School for many times, and participated in the course teaching and test setting of "Data Structure and Algorithm" and "Algorithm Design and Analysis" of Peking University.

Douban score 9.1, the eyes of the masses are still sharp!

This kind of book is still very well-known in algorithm competitions. You may have heard of it if you are preparing for an algorithm interview. If you haven't heard of it, you might as well buy it now.

Attach the catalogue of this kind of book to everyone:

0x00 基本算法
0x01 位运算
0x02 枚举、模拟、递推
0x03 递归
0x04 二分
0x05 排序
0x06 倍增
0x07 贪心
0x08 总结与练习
0x10 基本数据结构
0x11 栈
0x12 队列
0x13 链表与邻接表
0x14 Hash
0x15 字符串
0x16 Trie
0x17 二叉堆
0x18 总结与练习
0x20 搜索
0x21 树与图的遍历
0x22 深度优先捜索
0x23 剪枝
0x24 迭代加深
0x25 广度优先捜索
0x26 广捜变形
0x27 A*
0x28 IDA*
0x29 总结与练习
0x30 数学知识
0x31 质数
0x32 约数
0x33 同余
0x34 矩阵乘法
0x35 高斯消元与线性空间
0x36 组合计数
0x37 容斥原理与Möbius函数
0x38 概率与数学期望
0x39 0/1分数规划
0x3A 博弈论之SG函数
0x3B 总结与练习
0x40 数据结构进阶
0x41 并査集
0x42 树状数组
0x43 线段树
0x44 分块
0x45 点分治
0x46 二叉査找树与平衡树初步
0x47 总结与练习
0x50 动态规划
0x51 线性DP
0x52 背包
0x53 区间DP
0x54 树形DP
0x55 环形与后效性处理
0x56 状态压缩DP
0x57 倍增优化DP
0x58 数据结构优化DP
0x59 单调队列优化DP
0x5A 斜率优化
0x5B 四边形不等式
0x5C 计数类DP
0x5D 数位统计DP
0x5E 总结与练习
0x60 图论
0x61 最短路
0x62 最小生成树
0x63 树的直径与最近公共祖先
0x64 基环树
0x65 负环与差分约束
0x66 Tarjan算法与无向图连通性
0x67 Tarjan算法与有向图连通性
0x68 二分图的匹配
0x69 二分图的覆盖与独立集
0x6A 网络流初步
0x6B 总结与练习
0x70 综合技巧与实践
0x71 C++ STL
0x72 随机数据生成与对拍
0x7F 附录

If you don't plan to participate in the algorithm competition, I also suggest you buy it and check it out, but you can choose to check the content. If you don’t know which part you should look at, you can discuss it in my exchange group.

《Guide to Competitive Programming》

I haven't read a book like "Guide to Competitive Programming" myself. But I heard that the content is good, you can try it to see if the catalog is suitable for you.

BTW, CSES also recommended this book.

Summarize

How do you want to participate in the algorithm competition as early as possible, it is recommended to start learning at least from the freshman year.

It is recommended that you sell a book for systematic study, and then find a question bank to follow along with the questions. After the question bank is finished, go to the competition. After the competition is finished, you can look at everyone's solution, whether you have done it or not, if you do it, you can also see if others are doing better. After such a complete route, I believe that it is not a problem to get a ranking during the university and enter a large company. Of course, to enter a large company, other aspects are not bad. 😄


lucifer
5.3k 声望4.6k 粉丝