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