我好像寫過不少這個話題的,看到還有人問,再打擾一下大家
常見的錯誤,是用 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 是印度的,都不錯。
中國也有非常棒的計算機競賽網站,可惜都是中文的,就不推薦了。