这篇Codeforces考场攻略,精准击中新手、进阶选手常犯的「开场卡基础题慌节奏→中段漏过可解难题→直接拖垮rating涨幅」连锁问题,从防手速焦虑、防卡题心态崩塌两层核心逻辑,预设实用考场思路框架:比如开场先扫题干短、样例贴合经典模型的题切入,不强求更优但严卡细节;设置“3分钟无核心思路暂标记换题”“15分钟攻坚中题无果可补锚定信心的基础题”这类小阈值,助力踩准节奏拿稳应得分数。
对于OIer、ACMer或者单纯想刷算法、玩「电子竞技数学逻辑题」Codeforces(以下简称CF)绝对是绕不开的平台——它节奏快(通常Div.2/Div.3只有2小时)、题型活(不只是模板堆叠)、rating机制透明又***,但很多人刚打CF要么是「ABCDE卡A题」「手速跟不上榜题节奏」,要么是「卡一题慌一小时,连后面会做的都漏了」,今天就把从Div.5新手到偶尔摸个Div.1前排的踩坑+实操经验整理成攻略,帮你稳住心态、卡紧节奏、多冲几百分。
之一部分:赛前24小时到10分钟的「黄金准备」
很多人以为CF只考赛中能力,其实赛前状态调整和工具准备能直接决定前两题甚至三题的手速差——前两题差个10分钟,rating可能差出100分(Div.2前200分都是秒榜/手速分)。
赛制&题目预估要记牢
CF每场赛前都会在主页面标清楚「题型+目标分对应能做的题量」:
- Div.5/Div.4:都是入门模板题,目标青/蓝的话,Div.4要保4争5,Div.5全A稳上蓝
- Div.3:半入门半思维题,最后两题可能是线段树/DP小综合,目标紫的话保5争6
- Div.2:纯思维题为主,最后一题通常是紫/橙难度的高级算法,目标橙的话保4争5,冲红前40得全前4+快前3
- Div.1/EDU Round Div.1+Div.2:别硬刚!新手看Div.2部分就行,除非有特别感兴趣的题
工具和环境要锁死
别临时换编辑器!别临时换编译器!别临时换输入法!
- 推荐编辑器组合:VSCode(配CF插件+一键编译)/CLion(智能补全超爽,新手慎用快捷键不熟会卡)
- 一键编译脚本(C++选手必备,手敲g++真的慢):
可以在VSCode的tasks.json里写,或者直接桌面存个bat/sh文件,比如Windows的:
@echo off g++ %1 -o %~n1.exe -std=c++17 -O2 -Wall -Wextra -Wshadow -fsanitize=undefined,address -DLOCAL %~n1.exe
(注意最后一行加-DLOCAL,赛中提交要注释掉,调试的时候可以用,比如开
freopen("in.txt","r",stdin);读本地样例) - 本地样例和草稿纸:桌面新建一个
cf_temp文件夹,里面提前放好in.txt和out.txt(手敲样例进去别***!有时候网页***会带空格换行问题),草稿纸用大号A4白纸,分栏写每道题的「核心思路+伪代码+边界条件」——伪代码比空想省时间,边界条件写出来能防80%的卡样例
状态调整:轻装上阵,别熬夜背题
- 赛前24小时别做太难的题!别啃黑紫题啃到吐!可以做2-3道Div.3/Div.4的C/D题找手感
- 赛前1小时别玩游戏!别刷短视频!可以喝一杯温牛奶,听点轻音乐,或者闭目养神回忆一下常用模板(比如快速幂、二分、前缀和、并查集)
- 赛前10分钟一定要上厕所!一定要把浏览器全屏!一定要把CF插件打开(Codeforces Enhancer、Codeforces Visualizer这些都可以,能看实时榜、隐藏AC者头像防焦虑)
第二部分:赛中2小时的「节奏卡紧+心态稳赢」
CF赛中最忌讳的就是「死磕一道题」「心态一崩全乱」,严格按照「2+1+1.5」的时间节奏走(Div.2为例,Div.3/Div.4可以调整):
第1步:1-2分钟快速扫题(只看Div.3/2的前5题)
扫题的时候别管后面的高级题!别管题目长度!别管背景!只看「输入输出样例+数据范围」——
- 数据范围≤1e3:暴力枚举直接上
- 数据范围≤1e5:二分、前缀和、双指针、贪心
- 数据范围≤1e18:数学公式、快速幂、矩阵快速幂
- 数据范围≤1e6:线性筛、DP(滚动数组优化)
- 样例特别简单但背景复杂:大概率是思维题,别想复杂!比如求平均数、找规律、异或、模运算
第2步:20分钟内必须搞定前两题(Div.3/Div.4可以30分钟)
前两题都是送分题!手速慢的主要原因是「想多了」「手敲错变量名」「边界条件漏了」——
- 边看样例边写伪代码:比如A题是求三个数的更大值减最小值,伪代码就写「a,b,c输入→max(a,b,c)-min(a,b,c)→输出」
- 边写代码边加注释(边界条件):比如写循环的时候加个
// 注意i从1开始还是0开始,写数组的时候加个// 数组开够1e5+10别溢出 - 写完立刻测样例!立刻改!别等! 样例全过了立刻提交——别想着「优化一下再交」,优化可以赛后再做,赛中先拿稳分数
第3步:中间题(C/D)给40-60分钟
中间题是拉开差距的关键!如果这时候卡题了怎么办?
- 先看一眼实时榜! 如果C题有一半人过了,说明是你的思路错了,立刻换一种!如果只有10%的人过了,说明是难题,可以先放一放,做D题试试
- 写核心函数先测! 比如中间题要用到快速幂,先写个快速幂函数,测一下2^1000 mod 1e9+7对不对,再把快速幂嵌进去
- 换个角度想问题! 比如正向暴力不行就反向枚举,比如求满足条件的数不行就求不满足条件的数再减
- 别死磕!最多卡40分钟就跳过! 卡题的时候很容易陷入「死循环」,越想越错,越错越急,跳过之后回来做可能就豁然开朗了
第4步:最后题(E/F)给剩下的30-40分钟(能做就做,不能做别勉强)
最后题通常是高级算法,如果不会就别浪费时间!如果会一点点就写个「部分分代码」——
- 部分分代码怎么写?看数据范围!比如E题有30%的数据范围≤1e3,就直接写暴力枚举,能拿30分也是分
- 别乱提交!最后题如果没过样例就别提交,罚时也是扣rating的(虽然CF最后题罚时影响小,但乱提交会浪费时间)
第5步:心态稳赢的3个小技巧
- 别盯着实时榜的rating变化! 实时榜的rating变化是预估的,不准!盯着只会让你更焦虑
- 别和队友/朋友比手速! 每个人的节奏不一样,比只会打乱自己的节奏
- 别放弃!哪怕只剩1分钟! 有时候灵光一闪就能过一道题,哪怕过一道C题,rating也能涨几十
第三部分:赛后24小时的「黄金复盘」
很多人CF打完就关网页,rating掉了就骂平台骂题目,rating涨了就沾沾自喜——这是最浪费时间的做法! 赛后复盘比打10场CF都有用,严格按照「复盘流程」走:
复盘流程1:补题!补题!补题!
补题是提升rating的唯一捷径!补题的时候别直接看题解!
- 先补自己赛中没做出来的题(C/D/E),再补自己赛中做出来但可以优化的题(A/B)
- 补题的时候先想「自己赛中为什么没做出来」——是思路错了?是边界条件漏了?是模板不熟?是时间不够?
- 想出来之后再写代码!别直接抄题解!抄题解只会让你「一看就会,一做就废」
- 补完题之后要写「题解笔记」——比如用什么算法?有什么边界条件?有什么优化技巧?下次遇到类似的题怎么想?
复盘流程2:看别人的代码!
看别人的代码能学到很多优化技巧和不同的思路——
- 看榜上前100人的代码!尤其是榜一的代码,通常都是「最简洁、最快速」的
- 看代码的时候要注意「变量名」「注释」「优化技巧」——比如变量名要简洁明了,注释要加边界条件,优化技巧比如滚动数组、位运算、快速读入
复盘流程3:刷类似的题!
补完题之后要刷几道类似的题巩固一下——
- 可以用CF的「Tags」功能找类似的题,比如补了一道「双指针」的题,就找10道Tag是「two pointers」的Div.3/Div.4的题来做
- 也可以用洛谷的「题单」功能找类似的题,比如洛谷有很多「CF Div.2/Div.3题单」
CF只是一个游戏,别太在意rating!
rating只是一个「能力的参考值」,不是「能力的绝对值」!掉分了别灰心,涨分了别骄傲,最重要的是享受解题的过程,提升自己的算法能力!
祝大家都能在CF上冲分顺利,早日拿到自己想要的颜色!🎉

评论已关闭!