练习技巧 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}\) 虚拟竞赛。
- 死磕R1800 - R2000左右的构造题
- 做R1400左右的题目练习手速
- 参加虚拟竞赛