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:
Hal Burch 在1999年整个春假期间进行了分析得出了一个惊人的结论:总共有16类编程比赛的问题!此外,包括80%的顶尖的难题都出现在信息学国际奥林匹克竞赛中。它们是:
- 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.
如果你能掌握并解决其中的40%的算法问题类型,你就几乎能够在信息学国际奥林匹克竞赛保证获得一个银奖。掌握80%就能使你完全能够获得金奖。当然,“掌握”是一个艰难的坚果很难突破。我们将提供过多的算法难题以便你能磨练你的技能获得在国际上的声誉。