Hal Burch conducted an analysis over spring break of 1999 and made an amazing discovery: there are only 16 types of programming contest problems! Furthermore, the top several comprise almost 80% of the problems seen at the IOI. Here they are:
- Dynamic Programming
- Greedy
- Complete Search
- Flood Fill
- Shortest Path
- Recursive Search Techniques
- Minimum Spanning Tree
- Knapsack
- Computational Geometry
- Network Flow
- Eulerian Path
- Two-Dimensional Convex Hull
- BigNums
- Heuristic Search
- Approximate Search
- Ad Hoc Problems
The most challenging problems are Combination Problems which involve a loop (combinations, subsets, etc.) around one of the above algorithms - or even a loop of one algorithm with another inside it. These seem extraordinarily tricky to get right, even though conceptually they are ``obvious''.
If you can master solving just 40% of these problem types, you can almost guarantee a silver medal at the IOI. Mastering 80% moves you into the gold range almost for sure. Of course, `mastery' is a tough nut to crack! We'll be supplying a plethora of problems so that you can hone your skills in the quest for international fame.
Hal Burch在1999年的春假期间进行了分析,并取得了惊人的发现:只有16种编程竞赛问题!此外,前几个构成了IOI所见问题的近80%。他们来了:
- 动态编程
- 贪心
- 完整搜索
- 洪水填充
- 最短路
- 递归搜索术
- 最小生成树
- 背包
- 计算几何
- 网络流量
- 欧拉路径
- 二维凸面船体
- 大数
- 启发式搜索
- 大概搜索
- 特殊问题
最具挑战性的问题是围绕上述算法之一涉及循环(组合,子集等)的组合问题 - 甚至包括一个算法与另一个算法的循环。即使在概念上他们是“明显的”,这些看起来非常棘手。
如果你能够解决这些问题类型的40%,那么你几乎可以保证在IOI获得一枚银牌。掌握80%几乎肯定会让你进入黄牌范围。当然,“掌握”是一个难以解决的难题!我们会提供大量的问题,以便您可以磨练您的技能以追求国际声誉。