Programming Contest Problem Types |
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种类型,它们分别是:
动态规划
贪婪法
枚举搜索
标号法(染色法)
最短路径
最小生成树
背包问题
计算机图形问题
网络流
欧拉回路
二维凸包问题
大数问题
启发式搜索
近似搜索
其他题
最困难的是在循环中嵌套以上算法或综合应用以上算法,甚至循环中嵌套以上算法的综合应用。即使你将概念了解的很清楚,做对这些问题也很难。
你只需要完全张望仅仅以上16种类型的40%,你就有在IOI中夺银的实力。掌握80%你几乎可以确定将一块金牌收入囊中。当然,让你掌握这些算法不是我们的最终目的,我们会提供给你更多的练习充当你的磨刀石,磨厉你的竞赛技能。