如何提升自己的Codeforces分數

XiaoMo247發表於2024-06-10

如何提升自己的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)。

相關文章