练习技巧 2——从$R1400$​到$R1900$​

练习技巧 2——从\(R1400\)​到\(R1900\)

\(\text{Author : Masataka Yoneda May 7}^{\text{th}} \text{, 2019}\)

\(\text{Translator : Maystern}\)

source : https://docs.qq.com/pdf/DQWpHcE1hemlNaUFE

\(\text{Codeforces}\)​ 中,\(\text{rating}\)​ 最集中的一个区间是 \([1400,1500]\)​。这些人想要提高自己的 \(\text{rating}\)​ 但是从 \(R1500\)​ 开始向上爬分变得更加困难,并且很多人在这里就放弃了。但是也有许多人坚持练习,并且获得更高的rating。

要想达到 \(R 1900\)​​ ,这些技巧是必备的:

  • 你需要知道并且使用的主要算法是:

    • \(\text{Brute force}\) 暴力算法
    • \(\text{DP}\) 动态规划
    • \(\text{DFS}\) 深度优先搜索
    • \(\text{BFS}\)​ 广度优先搜索
    • \(\text{Dijkstra}\)​ 迪克斯特拉算法
    • \(\text{Binary Indexed Tree}\)​ 树状数组
    • \(\text{nCr , nPr}\) 组合数
    • \(\text{Mod inverse}\) 乘法逆元
    • \(\text{Bitmasks}\) 位运算及相关思想
    • $\text{Binary Search} $​ 二分法

    注意:我认为 \(\text{segment tree}\)​ 线段树在\(R 1800\)​​​ 之前并不需要,我是紫名的时候才了解线段树。

  • 你需要更快速地写代码:\(R 1100\)​​ ​的题目 \(5\)​​​ 分钟内写完,\(R 1400\)​​​ 的题目 \(10\)​​​ 分钟内写完。快速写代码的能力在 \(\text{Codeforces}\)​​​​ 中是非常重要的,因为如果比赛难度很大,那么写代码的速度会对您的排名有决定性的影响。

【如何练习】

如果你不擅长快速写代码和调试代码。你应该去做 \(\text{AtCoder}\) 的练习。根据事实统计,很多日本选手擅长快速写代码,但没那么擅长解决困难的问题。我觉得这有可能是因为\(\text{AtCoder}\)

我建议你去做\(\text{AtCoder Beginner Contest}\)​​​的 \(C,D\)​​​ 两题。争取能平均在 \(10 \text{min}\)​​​ 内解决 \(C\)​​​ 题 ,在 \(20 \text{min}\)​​​ 内解决 \(D\)​​​​ 题。

如果你不擅长解决\(R1400+\)的题目。你应该学习上述提到的若干算法,并且解决 \(\text{Codeforces}\) 中的典型问题。如果你觉得自己不擅长解决 \(\text{DP}\) 题,那么你应该解决难度为 \(R1200-R1400\) 并且 \(\text{tag}\)\(\text{DP}\) 的题目(这些题目大约有 \(50\) 题)。

​ 有趣的是,这些典型问题通常集中在 \(\text{Div.2-only Round}\)。如果你对 \(\text{Div.2-only Round}\) 不太擅长,你有可能不擅长使用一些经典算法,尤其是上述提到的\(10\)个技巧。

如果你可以使用经典算法解决经典问题但却不擅长解决\(R1500+\)​​的题目。你应该开始 \(\text{TopCoder}\)​​。这种练习方法适用于在\(\text{Div.2-only Round}\)​​表现优异,但在 \(\text{Div.1+Div.2 Round}\)​​ 中表现不是很好的选手。

​ 有时候,尤其在 \(\text{Div.1+Div.2 Round}\) 中,很多问题需要数学概念或数学思维。 \(\text{TopCoder}\)​ 上有很多使用数学概念和思维的题目​(并且实现比较简单),因此你需要练习这些问题。

​ 我建议你练习以往 $ 100 $ 个 \(\text{SRM}\) 中的 \(\text{Div1Easy}\)​ 问题。但是很多问题会非常难(甚至红名的选手都无法解决他们)因此,在解决这些问题之前,你需要看看有多少人解决了这个问题。你可以使用competitiveprogramming.info 这个网站来获得一些信息。

​ 不幸的是,我不知道有可以知道你之前在 \(\text{TopCoder SRM}\)​​ 中解决过的网站。如果你想要记录哪些问题你已经解决过了,你可以使用电子表格。

​ 当我蓝名的时候,我也不擅长数学思考。当我解决了$ 50 $ 个 \(\text{SRM}\) 中的 \(\text{Div1Easy}\) 问题,我成为\(\text{TopCoder}\) 中的黄名和 \(\text{Codeforces}\) 中的紫名了。

如果你擅长解决问题,但在正式比赛中发挥不好。你应该多做\(\text{virtual participation}\) 虚拟竞赛。

  1. 死磕R1800 - R2000左右的构造题
  2. 做R1400左右的题目练习手速
  3. 参加虚拟竞赛
posted @ 2022-02-24 11:53  Maystern  阅读(79)  评论(0编辑  收藏  举报