如何提升自己的Codeforces分數
此篇為 XiaoMo247 對原文的總結,原文是 Masataka Yoneda / E869120 的 A Way to Practice Competitive Programming (From Rating 1000 to 2400+)
目前只讀了 1000-1400 和 1400-1900,等作者 codeforces 分數到了 1900 再更新後面的。
首先是作者對三個 oj 網站的推薦:Codeforces,Atcoder,TopCoder。
然後就是大家最關心的如何提高自己的 cf rating。
1000-1400
達到1400評分只需要三件事:
-
你能快速寫出直接的模擬(在5-10分鐘內)。
-
你能快速寫出暴力解法(在5-10分鐘內)。
-
你能在腦中或紙上把問題分成幾種情況(例如,N=2,N=3,或N>=4)。
如何訓練:
練習簡單的編碼和思考,做Atcoder的 B 題和 C 題。
做題時有一些要點需要注意:
- 如果思考15分鐘無法解決B題或思考30分鐘無法解決C題就看題解。
- 在能解決問題的時候多看看高手的程式碼,往往能學到新的東西。
- 特別是在解決C題的時候,不管怎麼樣,建議你在紙上寫下做題痕跡,包括思考過程和草稿。
1400-1900
達到1900只需要達到兩點:
1.知道並能掌握以下演算法:
暴力 動態規劃 深搜 廣搜 Dijkstra演算法 樹狀陣列 排列組合 位掩碼 二分
2.能夠快速編寫程式碼(5min 解決 CF1100 分左右的問題,10min 解決 CF1400左右的問題)。
如何訓練:
如果你不能快速寫出程式碼,你應該去練習 ABC 的 C 題和 D 題,最後平均能在10min 內解決問題 C,20min內解決問題 D 就已經可以了。
如果你不能很好的解決CF1400分以上的問題,你需要針對的訓練那一類問題,例如DP不好,就訓練 1200-1400 的 DP 題。
如果你能解決一些典型問題但不擅長解決CF1500分左右的問題,你應該開始練習 TopCoder。有時,特別是在Div1+Div2比賽中,一些問題需要數學概念或思維。由於在 TopCoder 中有很多使用這些概念的問題(而且實現簡單!),你應該解決 TopCoder 的問題,推薦解決最近100個SRM中的 Div1Easy。
如果你擅長解決問題但在實際比賽中表現不好,你應該多參加虛擬比賽(VP)。