OJ训练第二周第七天:从刷题到算法复盘的关键节点
我带的几个同学训练到第二周第七天的时候几乎都会遇到同一个状态题目刷了不少但开始有点飘或者开始有点慌。飘是因为很多题一看就有思路慌是因为有些题明明能做出来可就是一直超时、一直边界错改到怀疑人生。说句实在话OJ训练的头两周第七天是个非常微妙的节点。第一周重点在适应环境、熟悉输入输出、把简单题做利索第二周如果节奏对应该已经从“我会写代码”过渡到“我会用算法思路去解一道题”了。第七天正好卡在这个过渡的尾巴上承前启后既是检验第二周成果的时候也是给第三周定调子的时候。这篇文章就聊聊我自己带队和刷题过程中总结出来的第二周第七天该怎么安排、该复盘什么、下一步怎么调整。1. 第二周第七天不是“再刷几题”的日子而是校准节奏的日子很多人把训练理解成“每天刷够量就行”第二周第七天也照常打开题单闷头做几道题做完打个卡然后第二天继续。这其实浪费了这个节点最大的价值。第七天的特殊性在于它是一周循环的末端你已经积累六天的数据。这个数据不是指AC了多少道题而是指你的做题状态、错误类型、时间分布这些都是可以拿出来仔细看一下的。我在第二周第七天通常会做一件事——不急着开新题先把过去六天提交过的错误代码翻出来按错误类型分个类。比如数字相关的问题频繁出现说明读题不仔细某个循环边界反复写错说明对区间开闭的理解还有缺口经常第一眼思路正确但写完超时说明你需要额外训练复杂度的敏感度。这些判断比多AC两道简单题重要得多。把常见错误类型记下来你第三周再做题时遇到同样情况就多留个心眼这是一种反馈机制。再者第七天也适合调整训练节奏本身。如果这六天你每天做四道题但正确率一直上不去那就说明四道太多了大脑一直在赶工根本没时间消化。反过来如果每天两道题有些轻松正确率很高但遇到新题容易卡壳那可能是题型结构太单一——比如六天都在练模拟题没怎么碰搜索和动态规划。把节奏校准好比多钻进几道题里意义更大。2. 回看第二周练了什么从“会写”到“会选”的关键周第二周的题目结构和第一周有明显的差异。第一周往往是“告诉你用循环你就用循环、告诉你排序你就排序”第二周则变成了“这道题该用什么思路需要你自己判断”。以我常用的训练计划为例第二周一般覆盖这么几类核心思想2.1 模拟题读题能力是最好的算法模拟题在OJ里承担的角色很特殊它不考高深算法考的是你把现实规则转化成代码逻辑的能力。很多第二周训练者容易烦躁觉得模拟题啰嗦又没技术含量但回头看大多数罚时都败在“漏看了半个条件”。我的建议是第二周做模拟题时务必练习用注释的方式把题面拆成几条不可违背的规则再写代码。比如“时间到达22点后不再接待”和“时间在22点及之后不再接待”这差一个等号结果就完全不一样。你用自然语言把边界条件翻译一遍踩坑概率会少很多。第二周的模拟题还要开始训练模块化思维。不要在一个main函数里堆几百行代码把“读数据”“处理规则”“输出结果”拆成函数。这在OJ训练的早期看起来有点形式主义但到了第三周第四周做多线程模拟、复杂状态机时这个习惯会直接决定你调试时的心态还能不能稳住。2.2 二分与分治从猜答案到确认答案如果第二周练到了二分那第七天是个很好的时间点去总结“什么时候我能用二分”。很多同学经过六天训练会用模板写出二分的框架但拿着一道新题还是判断不出来能不能二分。这个能力是需要归纳的。我经常用一句大白话来提示如果你能判断某个解是否可行并且这个可行性随着答案的增大或减小呈现单调性那就能二分。比如“检查某个高度能不能让所有积水流过去”或者“某个速度能不能在限定时间内送到”这些都是典型的二分应用。第七天的时候你可以把六天来所有用二分做的题拉出来自己试着归纳它们的共同特征不用人告诉你对错归纳出来的基本就是属于你自己的判断模型。分治的话第二周常见的就是归并排序的逆序对、快速幂这类。第七天要留意的是边界“分到什么时候停”——这是所有递归都要回答的问题也是后面学DFS、BFS、线段树的底层地基。2.3 递推与DP的入门状态定义比公式重要如果第二周已经出现了递推的题目很多同学会陷入一个误区看到一个题先猜公式。比如斐波那契变式题套着套着就套出个递推公式来但真要问“这个公式的状态是什么玩意”却说不太清楚。第七天复盘递推题时别只看AC代码多问自己一句dp[i]代表什么它是怎么从更小的状态转过来的初始状态是什么遍历方向是正的还是倒的把这三个问题写下来第三周真正接触背包、区间DP时你会感觉顺畅得多因为DP题本质就是在回答这三个问题。3. 第七天怎么过一套可以照抄的训练日流程我自己的训练日和带队用的流程经历过不少调整最后沉淀下来的这套方案至少能保证一个特点——你过完这一天会有“今天没白练”的感受而不是“今天也没做啥”的虚无。第七天尤其适用。3.1 上午轻量热身加旧题新做第七天上午不建议直接挑战全新难题。睡了一觉状态需要激活这时候做一两道已经AC过的旧题但换个要求用更短的时间写出来或者用另一种思路重新写。比如你昨天用双指针解的题今天尝试用数据结构去写以前用递归写的题今天用循环版本实现。这本质上就是在做学习里的“间隔提取”比再看一遍题解有用得多。我把这个环节控制在四十分钟以内两道题即可写不完就说明基本功有退化下午的计划就得调低难度。3.2 下午限时实战严格按比赛节奏走第七天下午一定要做一次限时实战模拟真实比赛环境。具体做法是找一场题量为三到四道的模拟赛难度比平时偏低一点时间卡在一个半小时之内期间不开聊天工具、不翻题解、不看任何讨论。限时实战的目的不是考你难题做不做得出来而是暴露你在限时条件下的决策能力。我见过太多同学平时做题行云流水一到限时就慌原因不是算法不会而是时间分配全乱套可能在某道题上卡了四十分钟剩下的题连读的机会都没有。所以第七天的实战要强制自己遵守一个分配原则先通读所有题按“预计难度”排个序先把最有把握的一题AC掉垫底再分出零碎时间啃难一些的。哪怕最后没有全对也比在一道题上较劲导致全崩要好得多。如果第七天的实战出现了严重的“一题卡死”那第七天晚上你就得专门练一个能力——果断放弃。3.3 晚上复盘归档把错误变成已解决的反馈晚上是第七天的重头戏也是最容易被人跳过的部分。很多同学实战结束后看一下分数感叹一句“哎那道题没做出来”然后就切去干别的了。但凡你想在第三周有实质提升这一步必须认真做。复盘时我建议按固定格式写训练笔记别看这是老生常谈OJ训练最值钱的就是这几行记录。格式大致包含题号和题目类型、你的初始思路、你实际卡在哪一步具体到是调试的还是思路的、最终怎么解出来的、有没有更优做法。这五点多花二十分钟写下来比你多刷两道题有用得多。因为你刷题会忘但写下来的反面教材和解题路径第三周复习时能快速唤起记忆。4. 第七天复盘的核心每个坑都要拆到能复述给别人听很多同学复盘就是看题解确认“哦这样写”然后照着重写一遍就当自己会了。这种复盘其实是自欺欺人因为照着答案会写和理解思路之间差距巨大。第七天我要求自己复盘时多走一步——把每个错题拆成一个可以讲给别人听的小故事。举个例子一位同学在实战中有一道二分题TLE了他当时的做法是每次判断可行性时都用快速排序重新整理数据结构复杂度直接变成N方加log自然超时。如果他只照着题解改成排序一次、判断里走指针那他学会的是“这道题怎么做”而不是“判断函数的复杂度也要算计在内”。但当他带着“判断函数里的预处理能否提前”这个问题去复盘去对比AC代码和自己的超时代码再把思路复述一遍给别人听他就掌握了“二分判断函数复杂度”这个更高层级的经验。复盘一定要拆到这种粒度才有用。具体来说每个坑都回答三个问题表面原因是什么、根本原因是什么、下次遇到同类题的第一反应应该是什么。有些错题可能表面原因是“数组开小了”根本原因是“没有根据数据范围推上限”下次遇到就应该是“先看输入规模再定数组维度”。这三个问题写多了你的错误模式就会越来越清晰。在第七天晚上你还可以用一个小技巧强化这个拆解动作——把本周所有错题按错误类型做一个统计表比如错误类型出现次数典型题下周预防策略边界条件漏判4区间合并、日期计算写码前先列出等价边界复杂度超限3二分判断内排序估算最坏复杂度后再动手递归栈溢出2深搜路径优先写非递归或手动栈输出格式错误3多组数据处理样例输出对照时逐字符检查我向你打包票这种表格只要细心填一次效果比把六天题目重刷一遍还带劲它会直接指出你第三周需要集中突破的方向。5. 第七天最容易踩的几个坑以及对应的调整办法这个阶段最常见的坑我单独列出来有些是我自己当年踩的有些是我看着别人踩的。不管哪种希望你在第七天过后就有意识地避开。5.1 对着题解刷题导致“做题幻觉”如果不小心成了“题解依赖型选手”第七天该警觉了。典型表现是惊觉“我当时想的时候根本没想到用这个思路”。注意阅读题解时有顿悟感和考试时独立想出来是两码事。前者是阅读能力后者才是解题能力。我的调整办法是第七天之后再看题解前强制给自己二十分钟的“盲解”时间。哪怕二十分钟过去了没有完整思路也要把想到一半的突破口写在纸上然后才允许看题解。这样题解只是补充你的半成品思考而不是替你想。二十分钟看起来“浪费”了其实那才是真正的训练。5.2 只看思路不动手实现还有一类同学复盘时很快把题解思路看明白但不会亲手去写AC代码“感觉自己懂了”就直接翻下一篇题解。这种做法在简单题上还能糊弄过去一旦到第三周的复杂数据结构和图论必然原形毕露。第七天请做一个有“洁癖”的决定每道复盘题不看自己原来的代码把题解合上独立重写一个能AC的版本。写出来的代码行数不重要重要的是写的过程中你会猛然发现很多“懂了”的细节其实还没懂。亲自跑出来的提交记录才是消化证据。5.3 盲目挑战过高难度第二周结束的时候人很容易高估自己。有人看到别人已经开始刷难题自己还在简单题里挣扎心里一急直接跳到综合题结果一卡就是一整天。这不仅耽误进度还打击自信。老实说OJ训练拼的不是谁做的题目难而是谁的基础扎实。前两周把简单到中等的模拟、二分、递推吃透后面的图论和DP才有土壤。如果你第七天发现本周大部分题拿到手还是要靠翻题解那就说明难度曲线拉得太陡了下一周应该往回退一档把巩固放在前面。5.4 不按数据范围设计算法第二周开始题目数据范围明显加大O(n²)在某些题里就会挂。但很多同学还在用第一周的思维——只关注“对不对”不关心“跑不跑得过”。第七天这个坑必须调整过来。我的做法是每道题动手前先看数据范围在草稿纸上快速算一下最坏情况下的运算次数如果超过10的7次方到10的8次方量级就要小心是不是得换更优的思路了。别嫌这一步麻烦它在比赛里能帮你在起跑阶段就排除掉一大批超时方案。6. 第三周的调整方向从“刷题数量”进入“专题深度”第二周第七天还有一个任务是给第三周做规划。这个规划不需要多复杂但一定要有一个明确的重点而不是今天做一道贪心、明天做一道图论东一榔头西一棒槌。如果你在第二周已经暴露了明显的短板比如差分和前缀和总是想不起来用那第三周的前三天就该专门夯实这个专题。具体做的方式是花半天时间把这个专题的原理和经典例题过一遍再看十几道这个专题的题目不用都写完但每一道都要在纸上写出“检测到该用前缀和”的信号以及整套解法的大致步骤。然后选三道最典型的完整实现确保能AC。这种“专题式”训练比“题海式”训练更适合第三周因为第三周常见的内容是更硬核的算法模型比如搜索剪枝、动态规划的常见类型、树与图的遍历。这些知识不像模拟题那样靠“读完题就能写”它需要你先建立起一个系统性的认知然后遇到新题时往这个框架里套。我常说第三周开始“知道用什么算法”比“会写这个算法的代码”更重要。因为前者是方向方向错了后面全是白费。第七天的规划表里你应该写出下周的主要算法清单以及每个算法至少要完成的练习量。比如第三周可以这样安排计划周一至周三二叉树与图的深度优先遍历、广度优先遍历每天两道基础题加一道应用变式周四至周五前缀和、差分、双指针专项刷十至十五道重点巩固“什么时候能用它”周六综合模拟赛一次严格按比赛时长周日复盘归档整理错误类型为第四周定方向这只是一个示例你可以根据第二周的实战表现调整内容比例。但“专题日安排”这个结构是很有必要的能够让训练节奏从“随缘遇题”变成“带着目的去练”。7. 第七天的心理建设中期疲劳是正常的但别让它变成放弃的信号最后聊一点不太技术但特别重要的事。OJ训练到第二周第七天身体和脑子都开始出现疲劳信号。你可能发现自己做题的兴奋感不如第一周了或者看到熟悉的错误提示就开始沮丧。别慌这个阶段几乎人人都会有。我自己第二周的时候也经历过一种“平台期”就是连续两三天做不出新题连AC了都提不起劲。后来反思了一下其实不是能力下降了而是新鲜感消退后训练的枯燥性开始暴露了。枯燥是常态它不代表你不适合这条路只说明你正在从“兴趣驱动”向“纪律驱动”过渡。第七天给自己一个明确的心理预期训练本来就不是一条直线上升的曲线而是一段一段的台阶。你可能前三天在一个水平上打转第四天突然领悟了一个小技巧之后水平才往上拱一小截。第二周后半段正是这种台阶出现的前夜如果你因为一两天的“无效感”就停下来那台阶就永远不会出现。所以第七天晚上除了复盘题目以外也可以问问自己的情绪状态写一句“目前最让我头疼的是哪类题”然后再写一句“我打算怎么面对它”。把这句承诺写下来贴在能看到的地方。别小看这个动作它会让第三周开始时的你有一种“已经做好心理准备”的踏实感。8. 写在最后第七天结束不是一周的句号而是第三周的起点第二周第七天过完如果归好类、复盘透、节奏也校准了那这周的收益就有了沉淀。如果这一天你只是继续埋头刷了几道题也不算错但下半程的训练效率很可能就会开始打折。我的经验是OJ训练的成长速度不是由你刷了多少题决定的而是由你“做完题之后做了什么”决定的。第七天正好是检验这句话的最好时刻——你没有时间压力去赶新题又有完整的六天数据做依据最适合把零散经验变成可以复用的方法论。等下周二结束时你再回头看会发现自己对很多题的第一反应和现在明显不一样。那种“不只是会写而是会选”的感觉才是OJ训练从量变走向质变的信号。保持住这个节奏第三周继续往前推。

相关新闻

Vue多页应用单页面打包:webpack配置详解与打包模式切换实战

Vue多页应用单页面打包:webpack配置详解与打包模式切换实战

多页vue应用做单页面打包,这个需求听起来有点绕,但实际干过前端工程化的人都能秒懂:项目结构还是多页那一套,不同业务页面各自维护,可最后构建出来的东西要能塞进一个HTML里跑起来,连带着打包模式还得能灵活…

2026/10/14 17:58:20 阅读更多 →
提示词库的工程化:product-manager-prompts 校验与目录生成脚本解析

提示词库的工程化:product-manager-prompts 校验与目录生成脚本解析

【免费下载链接】product-manager-prompts A repository of Generative AI prompts for product managers using agents such as ChatGPT, Claude, & Gemini 项目地址: https://gitcode.com/gh_mirrors/pr/product-manager-prompts 点击查看 免费下载 product-…

2026/10/14 17:58:20 阅读更多 →
Qt鼠标事件与paintEvent绘图实战:手写迷你画板

Qt鼠标事件与paintEvent绘图实战:手写迷你画板

你有没有遇到过这种情况:在Qt里写了个自定义控件,鼠标怎么点都没反应,界面上该画的图形也不刷新,网上搜了一堆资料,结果发现是事件处理器根本没重写对地方。我当年自学Qt时,就被鼠标事件和绘图事件这套组合…

2026/10/14 17:58:20 阅读更多 →

最新新闻

React Native应用难以破解?morphe-patches的Hermes字节码十六进制补丁与哈希修复技巧

React Native应用难以破解?morphe-patches的Hermes字节码十六进制补丁与哈希修复技巧

【免费下载链接】morphe-patches 🍃 Human-made patches for Morphe 项目地址: https://gitcode.com/gh_mirrors/mor/morphe-patches 点击查看 免费下载 morphe-patches 是一个为 Android 补丁工具 Morphe 提供社区补丁的开源仓库,其中最硬核…

2026/10/14 18:47:02 阅读更多 →
短链码生成:MurmurHash 与 62 进制转换

短链码生成:MurmurHash 与 62 进制转换

Guava 的 MurmurHash 测试与封装 简介:Guava 自带 MurmurHash 算法,直接调用生成 32 位哈希值,再封装到工具类 背景 短链码用 MurmurHash 生成,Guava、Jedis 等框架已经集成了这个算法,不用从头开发会用即可&#xf…

2026/10/14 18:47:02 阅读更多 →
绿深LD3320离线语音识别方案:从资料包到可运行工程

绿深LD3320离线语音识别方案:从资料包到可运行工程

简介:绿深LD3320语音识别模块全套开发资料,面向单片机开发者、嵌入式初学者及需要为项目加入语音交互功能的工程师。资源围绕LD3320芯片的语音识别与串口通信能力展开,帮助读者摆脱物理按键依赖,快速实现语音指令控制。压缩包共18…

2026/10/14 18:47:02 阅读更多 →
微信小程序实战案例:计时器,理解 JS 定时器与 CSS 视觉叠加

微信小程序实战案例:计时器,理解 JS 定时器与 CSS 视觉叠加

微信小程序实战案例:计时器,理解 JS 定时器与 CSS 视觉叠加摘要:本篇基于案例 3.5 计时器,讲解小程序中一次性定时器、循环定时器的实际开发,结合页面状态控制、事件绑定、CSS 伪元素扩展效果,梳理开发思路…

2026/10/14 18:47:02 阅读更多 →
全国县级行政边界shp使用指南:坐标系、空间连接与区域统计

全国县级行政边界shp使用指南:坐标系、空间连接与区域统计

简介:这份全国省、县界线shp格式矢量图面向地理信息系统从业者、地图可视化开发者及需要行政区划底图的学生与研究人员,解决全国范围内精确到县级的行政边界数据获取问题,可用于专题制图、空间分析、区域统计与GIS教学等场景。资源以rar压缩包…

2026/10/14 18:47:02 阅读更多 →
纯C语言实现LSTM:从张量设计到嵌入式部署的完整指南

纯C语言实现LSTM:从张量设计到嵌入式部署的完整指南

简介:这是一份面向C语言开发者与神经网络初学者的LSTM递归神经网络实现资源,旨在帮助读者在资源受限的环境中理解并实践循环网络。项目参考Andrej Karpathy的char-rnn思路,但改用C语言重写,可用于文本生成等长期依赖建模任务&…

2026/10/14 18:46:02 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →