我好像写过不少这个话题的,看到还有人问,再打扰一下大家
常见的错误,是用 LeetCode 准备 USACO。这两者是完全不同风格的题目,就像 MathCounts 和 AMC 系列,以及 AIME,到 USAMO
LeetCode定位是我 technical coding interview 做准备的,和 Competitive Programming 是完全两回事。LeetCode也有比赛,每周赛和两周赛,大多数人都是十多分钟作完四题,最后拼时长。LeetCode的题目相对简单的多,考的是你的知识面。
而Competitive Programming,起码2小时以上,绝大多数人都不能解答所有问题。每题都需要长时间思考,考的是解决问题的能力。
准备 Competitive Programming 比如 USACO,不要去练 LeetCode,基本上没有用。而是要练下面的网站:
最好的网站是 TopCoder 和 Codeforces, 题目多,community好,有难度,最适合竞赛。
初学者最好的是 HackerRank 和 UVa Online Judge, 比较简单。
Project Euler 特别多 数学难度的题目。
DMOJ是加拿大的,也方程适合USACO
AtCoder 是日本的,SPOJ是波兰的,CodeChef 是印度的,都不错。
中国也有非常棒的计算机竞赛网站,可惜都是中文的,就不推荐了。