很多准备参加蓝桥杯的同学,第一次刷题时都会陷入同一种焦虑:别人在晒通过数量,自己连输入输出都写不顺。蓝桥杯备赛这件事,真正拉开差距的往往不是刷题数量,而是备赛方法和对比赛规则的认知。这篇内容不打算讲具体的某道真题,而是把我带学生备赛这几年反复验证过的路线整理出来:先判断这个比赛怎么给分,再决定学什么、怎么练、怎么上考场。它适合第一次接触算法竞赛的初学者,也适合已经刷了不少题但成绩始终稳定不下来的同学。1. 备赛前先看懂判分逻辑:这比赛和刷题网站上的OJ不一样1.1 题型构成直接决定备赛重心蓝桥杯这类赛事通常混合两种题型:结果填空题和程序设计题。结果填空题只提交最终答案,不提交代码,这意味着你完全可以用暴力枚举、Excel、草稿纸手算甚至现场写一个一次性脚本解题。程序设计题则需要提交源代码,评测系统会按测试点给分,部分数据点通过也有分,这和“要么AC、要么零分”的传统OJ赛制有本质区别。按测试点给分这个规则,直接影响考场上“写不出来也要写暴力”的决策。只要你的程序能在小规模数据上正确,就有机会拿到对应的部分分。空白提交才是真正的零分。很多第一次参赛的同学不知道这一点,遇到难题直接放弃,白白丢掉一大截基础分。1.2 输入输出和运行环境是隐性门槛平时用刷题网站上常见的“核心代码模式”写惯了,到了比赛环境容易翻车,因为这里要求自己处理完整的输入输出。以C++为例,数据量较大时,一个输入输出加速的钩子能明显降低超时风险;Python选手则建议用缓冲读入。这些不是算法问题,但比算法问题更容易让你在考场上因小失大。同样容易忽略的是数据类型。累加求和、组合数、排列数很容易超出32位整数范围,平时用小数据样例测不出问题,一到大数据点就莫名溢出。备赛初期就要养成习惯,凡是和长度、容量、数目相关的变量,先想清楚取值范围,该用64位整数就绝不省。1.3 用目标倒推备赛资源目标不同,任务量完全不同。与其刷完所有教材,不如先根据目标等级规划投入。我一般建议学生这样分配:目标必须吃透的内容建议周期和节奏争取省奖、顺利完赛模拟、枚举、简单贪心、排序、基础容器使用每天1.5小时,连续3个月目标省二及以上在上一档基础上加二分、前缀和、DFS/BFS、基础动态规划每天2小时,3到4个月冲省一甚至决赛在上一档基础上加记忆化搜索、最短路、最小生成树、数论常用结论每天3小时,持续4个月以上这个表不是让你照着买书,而是让你知道,如果不打算冲最高等级,那很多高级算法可以往后放。把主要时间押在基础题的稳定输出上,性价比高得多。2. 算法知识地图:哪些必须吃透,哪些可以战略性放弃2.1 高频考点分为四档真题刷多了会发现,几乎所有编程大题都能归入几个固定算法簇。我按“投入产出比”把它们分成四档:第一档是基础中的基础,包括模拟、枚举、排序、二分、双指针、前缀和与差分、DFS/BFS、贪心;第二档是拉开差距的核心,包括动态规划、图论基础;第三档是定向补充,包括数论、字符串哈希和KMP;第四档是决赛级别再说,包括计算几何、平衡树、网络流、后缀自动机。第一档覆盖了绝大多数小题,也是解决复杂问题的底层积木。很多同学看到一道题觉得难,其实是“模拟+二分”这种组合没见过,而不是真不会。第二档的动态规划是区分中等水平和高水平选手的关键,建议至少把背包问题和线性DP做到能默写模板。第三档按需补充,不需要一上来就啃数论。2.2 填空题的独特打法很多同学把填空题理解成“不可以写代码的题”,这是误解。比赛允许你在本地写程序辅助计算,最终只要结果填对就行。因此填空题的正确策略是“不择手段出答案”:能写代码暴力枚举就不手算,能用数学公式推导就写公式,能用表格拉数就拉数。我曾经见过有学生在草稿纸上手动排半天组合数,其实写十行递归几秒就出结果了。填空题还可能隐藏陷阱:数据溢出、浮点精度、位运算优先级。得到答案后建议用第二种方法交叉验证一下,实在没有第二种方法,也要把结果代回题意做一次逻辑检查。很多时候粗心填错,不是不会做,而是少了这最后一步验证。2.3 组合题的拆解训练蓝桥杯风格的题目经常是一个场景包着两三个算法:先模拟生成数据,再排序,最后用二分查询;或者先搜索建图,再做最短路。备考时不能只刷孤立模板题,要练习把一道题拆成多个子任务。我惯用的做法是,每道题读完,先在草稿纸上写三行:是什么场景、要哪些子步骤、每个子步骤用什么数据结构或算法。写完之后再动手编码,思路会清晰非常多。这种拆题能力需要在平时训练中刻意培养。你会发现,很多看起来不会的题,拆成子任务后,每一步单独拿出来都懂。差的只是中间那座桥。3. 单题训练流水线:怎样把一道题真正吃透3.1 读题时圈出四个信息拿到题目先别急着看样例,把四个东西圈出来:输入格式、输出格式、数据范围、时间限制。数据范围决定了算法复杂度的上限,比如n是10万级别的时候,O(n²)基本会超时,就要想二分、前缀和或更优结构;如果n只有20,大概率可以暴力枚举或者状态压缩。时间限制影响语言选择,Python写暴力和小范围搜索通常没问题,但超大数据量的场景要提前想清楚常数开销。3.2 独立思考的黄金十五分钟刷题最忌讳五分钟没过就去翻题解。我给自己定过一条规则:新题至少独立思考15分钟,期间只做三件事——举例走一遍过程、在小数据上画出状态变化、尝试最朴素的做法。如果15分钟后依然没有思路,可以标记“卡题”,然后去对照题解,但看完题解必须合上,重新自己实现一遍。这个动作确保你是在“学会”,而不是“看过”。很多同学看题解时觉得“原来如此”,合上代码自己写又无从下手。原因就是跳过思考环节,直接把结论装进了短期缓存。独立思考的过程很痛苦,但那是长进最快的时候。3.3 样例通过后,再补三组自测很多选手败在“样例都过了,提交零分”,原因是样例太友好,没覆盖边界。我建议每道题在提交前,至少额外构造三类测试:最小数据,比如n=1、空串、零个元素,专门检查初始化和边界;极限数据,比如最大值、全相同、逆序排列,检查是否超时和溢出;重复数据,比如大量相同元素、负值、浮点精度问题,检查逻辑是否被特殊情况绕进去。把这三类测试跑通再提交,错误率会下降很多。这个习惯一开始会觉得麻烦,但真正上考场时,它比多会一个算法更救命。3.4 刷题记录表才是真正的错题本我让学生维护一张简单的表,字段包括日期、题目描述、核心考点、是否一次通过、失败原因、二刷日期。每周按考点统计一次,你会发现错误不是分散的,而是集中在某几个点。比如有人反复在“字符串分割”上栽跟头,有人总是把DFS的visited数组回溯写错。针对高频错误点做专项训练,比漫无目的地刷新题有效得多。这张表到了冲刺阶段还能成为考前复习手册。与其考前翻一堆题解,不如看你自己的错误记录,针对性极强。4. 时间安排和训练节奏:从零基础到考场稳定的三个阶段4.1 基础期:把语法变成肌肉记忆备赛周期如果有四个月,第一个月我建议只做一件事:让常用语法和容器不再需要查文档。C++选手至少熟练使用vector、string、map、set、queue、stack、priority_queue的常用操作;Java选手熟悉集合类;Python选手要会用列表推导式、字典、set、deque和常用itertools函数。别小看这个阶段,很多同学模拟赛翻车并不是不会算法,而是写个字符串切分还要停下来查语法,时间就这么耗掉了。基础期的刷题量不用大,每天三到五道简单题即可。重点是每道题都能顺畅地写完、编译、提交通过,而不是追求难题。4.2 专项期:一个专题一个专题地突破第二到第三个月进入专项训练,按“二分、前缀和、DFS、BFS、贪心、DP、图论”的顺序,每类花5到7天。每天控制在2到3道题,第一道用来建立模板,后两道用来变化场景。做专题时建议先别看题目标签,因为真实比赛不会告诉你这题考什么。你会慢慢发现自己能识别出“这是二分答案”“这是背包变形”,这种模式识别能力就是考场上的手感。一个专题做完后,回头看一下这个专题里错了哪些题,把所有WA原因归纳成一句话。你会发现,很多错误本质上都是同一个问题,只是换了场景。4.3 冲刺期:模拟赛为主,新知识为辅最后一个月不再建议学全新算法,每周至少两次完整模拟。模拟要用比赛环境、比赛规则,中间不暂停,不看题解。模拟结束之后,把每一题的用时和错误率填进表里,找出“时间黑洞”:有些人花40分钟调试一道模拟题,有些人读题太慢,这些数据会清清楚楚地暴露问题。然后针对暴露出的薄弱点做精准补强。冲刺期最容易犯的错是还想学新知识,比如临时抱佛脚看计算几何。我的建议是,把已会的知识练到炉火纯青,比囫囵吞下新知识有用得多。4.4 每天两个番茄钟比周末十小时可靠备赛最怕三分钟热度。我建议工作日每天两个番茄钟,每个40分钟专注加10分钟休息,周末再来一个四小时的大块时间。连续三个月的每天两小时,效果远好于考前突击十小时。竞赛能力本质上是模式识别,模式识别靠的是反复激活记忆,而不是突击灌入。如果实在坚持不下去,就设一个最低目标:每天至少过一遍快排或二分模板。别小看这种“无脑”重复,它能帮你维持手感,也能在低谷期让你不至于完全放下。5. 模拟赛和临场策略:把训练场上的决策搬到考场上5.1 完整模拟的正确姿势模拟不是随便刷套题,要营造“回不了头”的氛围。找一段完全没人打扰的时间,把手机放到另一个房间,打开比赛页面或下载好的题集,倒计时开始后就只能写题。结束前10分钟必须停止写新题,开始检查旧题,检查项包括:是否有多余调试输出、变量名拼写、文件读写残留、数组越界、输入输出格式。我见过太多人模拟赛成绩不错,但正式比赛因为忘了删一行调试代码而整题零分。模拟赛的成绩有波动很正常。关键是每次模拟都要找到至少一个可改进的点,不用面面俱到。5.2 时间分配:第一轮只求有分,第二轮再补优化我的赛场策略是“两轮法”:第一轮快速过所有题,把能直接写出的基础题全部拿下;完全没思路的题用暴力版本先拿部分分;剩最后一小时,再回来优化最可能得分的题。这样做的好处是,不会在一道难题上耗到没时间做简单题。按测试点给分的规则下,最亏的不是难题没做出,而是简单题因为时间不够而空白。同时要练习快速判断“这道题值不值得死磕”。一个通用判断标准是:五分钟内没有形成初步思路,就先放下,做后面的题。5.3 考前整理一页“默写式模板”考前我建议每个人整理一页“默写式模板”,包含快速输入输出、排序、DFS/BFS模板、二分答案模板、常见背包循环、最短路Dijkstra模板、素数筛。注意,这套模板不是考场上抄的,而是帮你考前快速过一遍主干代码。真正上了考场,如果连模板都要现场想,说明还没准备好。整理模板的过程本身就是查漏补缺。模板不是越多越好,一页能写完才是真熟练。能写在纸上的模板,才说明你已经理解透了。5.4 草稿纸和可视化思维做题时不要只盯着屏幕空想。很多动态规划题,在草稿纸上画出取或不取的决策表,比干想快得多;很多递归题,画一棵小规模递归树,就能看出剪枝点。我要求学生每场模拟赛至少用半张草稿纸,不是为了算数,而是为了让思路有落点。这个习惯从模拟期就要养成,到了考场才能自然使用。有些同学觉得用草稿纸浪费时间,实际上恰好相反。乱画五分钟,可能省下半个小时的返工。6. 避坑实录:备赛中最常见的翻车现场6.1 只刷新题不复盘我带过的某个学生曾经刷了三百多道题,但连做三次模拟赛,成绩一次比一次差。我把他的刷题记录拉出来一看,错题几乎从不回头看,同一类字符串处理错误出现了十几次。后来强制他每道错题写一句原因,每周按考点统计,两周之后准确率就明显回升。刷题数量只是数据,复盘才是转化率。6.2 沉迷难题,看不起简单题备赛时很多人喜欢挑战难题,通过一道难题的成就感确实很足。但比赛里真正决定获奖下限的,恰恰是基础题的稳定性。省赛卷子里大量题目都是模拟、枚举、贪心和简单搜索,把这些做到快、准、稳,就已经超过多数人。不要用难题的数量麻痹自己,先把简单题练到不丢分,再谈难题。6.3 看完题解假装懂了“看题解”是备赛里性价比最低的动作。很多同学看完觉得“原来如此”,合上代码自己写又无从下手。正确的题解使用流程是:独立思考,卡住,记录卡点,看题解,合上题解重新写,第二天再写一遍。第二天还能流畅写出来,才叫真正掌握。如果只是看过,那一周后基本归零。6.4 平时用网页编辑器,考场寸步难行比赛环境和刷题网站不同,没有在线编译器,没有自动提示,也查不了资料。平时如果一直依赖网页编辑器,到了本地环境连编译参数都不熟,第一题就会浪费大量时间。建议从备赛第二周起,练习环境固定为本地编辑器加命令行编译运行,至少要懂常见的编译命令和错误输出。6.5 心态崩在最后一小时最后半小时突然发现一道题思路错了,很多人会立刻推翻重写。经验告诉我,这个时候推翻重写大概率写不完,还会导致原本正确题的代码没时间检查。更好的做法是,如果现有代码只有某几个测试点不过,先记录问题,继续验证前面的题;如果还有大量时间,再针对具体测试点打补丁。切忌在最后时刻大范围重构。最后还是分享两点私人心得带过这么多届学生之后,我越来越觉得,蓝桥杯备赛考察的不是谁刷的题多,而是谁更能稳定做对基础题。每天固定两小时,一个专题一个专题过,错题认真复盘,最后一个月坚持完整模拟。这一套流程笨,但有效。我给每个学生都会准备一个小本子,记录每一次错误类型,考前只看那几页,比翻厚厚模板有用得多。希望这篇内容能帮你少走弯路。
很多准备参加蓝桥杯的同学,第一次刷题时都会陷入同一种焦虑:别人在晒通过数量,自己连输入输出都写不顺。蓝桥杯备赛这件事,真正拉开差距的往往不是刷题数量,而是备赛方法和对比赛规则的认知。这篇内容不打算讲具体的某道真题,而是把我带学生备赛这几年反复验证过的路线整理出来:先判断这个比赛怎么给分,再决定学什么、怎么练、怎么上考场。它适合第一次接触算法竞赛的初学者,也适合已经刷了不少题但成绩始终稳定不下来的同学。1. 备赛前先看懂判分逻辑:这比赛和刷题网站上的OJ不一样1.1 题型构成直接决定备赛重心蓝桥杯这类赛事通常混合两种题型:结果填空题和程序设计题。结果填空题只提交最终答案,不提交代码,这意味着你完全可以用暴力枚举、Excel、草稿纸手算甚至现场写一个一次性脚本解题。程序设计题则需要提交源代码,评测系统会按测试点给分,部分数据点通过也有分,这和“要么AC、要么零分”的传统OJ赛制有本质区别。按测试点给分这个规则,直接影响考场上“写不出来也要写暴力”的决策。只要你的程序能在小规模数据上正确,就有机会拿到对应的部分分。空白提交才是真正的零分。很多第一次参赛的同学不知道这一点,遇到难题直接放弃,白白丢掉一大截基础分。1.2 输入输出和运行环境是隐性门槛平时用刷题网站上常见的“核心代码模式”写惯了,到了比赛环境容易翻车,因为这里要求自己处理完整的输入输出。以C++为例,数据量较大时,一个输入输出加速的钩子能明显降低超时风险;Python选手则建议用缓冲读入。这些不是算法问题,但比算法问题更容易让你在考场上因小失大。同样容易忽略的是数据类型。累加求和、组合数、排列数很容易超出32位整数范围,平时用小数据样例测不出问题,一到大数据点就莫名溢出。备赛初期就要养成习惯,凡是和长度、容量、数目相关的变量,先想清楚取值范围,该用64位整数就绝不省。1.3 用目标倒推备赛资源目标不同,任务量完全不同。与其刷完所有教材,不如先根据目标等级规划投入。我一般建议学生这样分配:目标必须吃透的内容建议周期和节奏争取省奖、顺利完赛模拟、枚举、简单贪心、排序、基础容器使用每天1.5小时,连续3个月目标省二及以上在上一档基础上加二分、前缀和、DFS/BFS、基础动态规划每天2小时,3到4个月冲省一甚至决赛在上一档基础上加记忆化搜索、最短路、最小生成树、数论常用结论每天3小时,持续4个月以上这个表不是让你照着买书,而是让你知道,如果不打算冲最高等级,那很多高级算法可以往后放。把主要时间押在基础题的稳定输出上,性价比高得多。2. 算法知识地图:哪些必须吃透,哪些可以战略性放弃2.1 高频考点分为四档真题刷多了会发现,几乎所有编程大题都能归入几个固定算法簇。我按“投入产出比”把它们分成四档:第一档是基础中的基础,包括模拟、枚举、排序、二分、双指针、前缀和与差分、DFS/BFS、贪心;第二档是拉开差距的核心,包括动态规划、图论基础;第三档是定向补充,包括数论、字符串哈希和KMP;第四档是决赛级别再说,包括计算几何、平衡树、网络流、后缀自动机。第一档覆盖了绝大多数小题,也是解决复杂问题的底层积木。很多同学看到一道题觉得难,其实是“模拟+二分”这种组合没见过,而不是真不会。第二档的动态规划是区分中等水平和高水平选手的关键,建议至少把背包问题和线性DP做到能默写模板。第三档按需补充,不需要一上来就啃数论。2.2 填空题的独特打法很多同学把填空题理解成“不可以写代码的题”,这是误解。比赛允许你在本地写程序辅助计算,最终只要结果填对就行。因此填空题的正确策略是“不择手段出答案”:能写代码暴力枚举就不手算,能用数学公式推导就写公式,能用表格拉数就拉数。我曾经见过有学生在草稿纸上手动排半天组合数,其实写十行递归几秒就出结果了。填空题还可能隐藏陷阱:数据溢出、浮点精度、位运算优先级。得到答案后建议用第二种方法交叉验证一下,实在没有第二种方法,也要把结果代回题意做一次逻辑检查。很多时候粗心填错,不是不会做,而是少了这最后一步验证。2.3 组合题的拆解训练蓝桥杯风格的题目经常是一个场景包着两三个算法:先模拟生成数据,再排序,最后用二分查询;或者先搜索建图,再做最短路。备考时不能只刷孤立模板题,要练习把一道题拆成多个子任务。我惯用的做法是,每道题读完,先在草稿纸上写三行:是什么场景、要哪些子步骤、每个子步骤用什么数据结构或算法。写完之后再动手编码,思路会清晰非常多。这种拆题能力需要在平时训练中刻意培养。你会发现,很多看起来不会的题,拆成子任务后,每一步单独拿出来都懂。差的只是中间那座桥。3. 单题训练流水线:怎样把一道题真正吃透3.1 读题时圈出四个信息拿到题目先别急着看样例,把四个东西圈出来:输入格式、输出格式、数据范围、时间限制。数据范围决定了算法复杂度的上限,比如n是10万级别的时候,O(n²)基本会超时,就要想二分、前缀和或更优结构;如果n只有20,大概率可以暴力枚举或者状态压缩。时间限制影响语言选择,Python写暴力和小范围搜索通常没问题,但超大数据量的场景要提前想清楚常数开销。3.2 独立思考的黄金十五分钟刷题最忌讳五分钟没过就去翻题解。我给自己定过一条规则:新题至少独立思考15分钟,期间只做三件事——举例走一遍过程、在小数据上画出状态变化、尝试最朴素的做法。如果15分钟后依然没有思路,可以标记“卡题”,然后去对照题解,但看完题解必须合上,重新自己实现一遍。这个动作确保你是在“学会”,而不是“看过”。很多同学看题解时觉得“原来如此”,合上代码自己写又无从下手。原因就是跳过思考环节,直接把结论装进了短期缓存。独立思考的过程很痛苦,但那是长进最快的时候。3.3 样例通过后,再补三组自测很多选手败在“样例都过了,提交零分”,原因是样例太友好,没覆盖边界。我建议每道题在提交前,至少额外构造三类测试:最小数据,比如n=1、空串、零个元素,专门检查初始化和边界;极限数据,比如最大值、全相同、逆序排列,检查是否超时和溢出;重复数据,比如大量相同元素、负值、浮点精度问题,检查逻辑是否被特殊情况绕进去。把这三类测试跑通再提交,错误率会下降很多。这个习惯一开始会觉得麻烦,但真正上考场时,它比多会一个算法更救命。3.4 刷题记录表才是真正的错题本我让学生维护一张简单的表,字段包括日期、题目描述、核心考点、是否一次通过、失败原因、二刷日期。每周按考点统计一次,你会发现错误不是分散的,而是集中在某几个点。比如有人反复在“字符串分割”上栽跟头,有人总是把DFS的visited数组回溯写错。针对高频错误点做专项训练,比漫无目的地刷新题有效得多。这张表到了冲刺阶段还能成为考前复习手册。与其考前翻一堆题解,不如看你自己的错误记录,针对性极强。4. 时间安排和训练节奏:从零基础到考场稳定的三个阶段4.1 基础期:把语法变成肌肉记忆备赛周期如果有四个月,第一个月我建议只做一件事:让常用语法和容器不再需要查文档。C++选手至少熟练使用vector、string、map、set、queue、stack、priority_queue的常用操作;Java选手熟悉集合类;Python选手要会用列表推导式、字典、set、deque和常用itertools函数。别小看这个阶段,很多同学模拟赛翻车并不是不会算法,而是写个字符串切分还要停下来查语法,时间就这么耗掉了。基础期的刷题量不用大,每天三到五道简单题即可。重点是每道题都能顺畅地写完、编译、提交通过,而不是追求难题。4.2 专项期:一个专题一个专题地突破第二到第三个月进入专项训练,按“二分、前缀和、DFS、BFS、贪心、DP、图论”的顺序,每类花5到7天。每天控制在2到3道题,第一道用来建立模板,后两道用来变化场景。做专题时建议先别看题目标签,因为真实比赛不会告诉你这题考什么。你会慢慢发现自己能识别出“这是二分答案”“这是背包变形”,这种模式识别能力就是考场上的手感。一个专题做完后,回头看一下这个专题里错了哪些题,把所有WA原因归纳成一句话。你会发现,很多错误本质上都是同一个问题,只是换了场景。4.3 冲刺期:模拟赛为主,新知识为辅最后一个月不再建议学全新算法,每周至少两次完整模拟。模拟要用比赛环境、比赛规则,中间不暂停,不看题解。模拟结束之后,把每一题的用时和错误率填进表里,找出“时间黑洞”:有些人花40分钟调试一道模拟题,有些人读题太慢,这些数据会清清楚楚地暴露问题。然后针对暴露出的薄弱点做精准补强。冲刺期最容易犯的错是还想学新知识,比如临时抱佛脚看计算几何。我的建议是,把已会的知识练到炉火纯青,比囫囵吞下新知识有用得多。4.4 每天两个番茄钟比周末十小时可靠备赛最怕三分钟热度。我建议工作日每天两个番茄钟,每个40分钟专注加10分钟休息,周末再来一个四小时的大块时间。连续三个月的每天两小时,效果远好于考前突击十小时。竞赛能力本质上是模式识别,模式识别靠的是反复激活记忆,而不是突击灌入。如果实在坚持不下去,就设一个最低目标:每天至少过一遍快排或二分模板。别小看这种“无脑”重复,它能帮你维持手感,也能在低谷期让你不至于完全放下。5. 模拟赛和临场策略:把训练场上的决策搬到考场上5.1 完整模拟的正确姿势模拟不是随便刷套题,要营造“回不了头”的氛围。找一段完全没人打扰的时间,把手机放到另一个房间,打开比赛页面或下载好的题集,倒计时开始后就只能写题。结束前10分钟必须停止写新题,开始检查旧题,检查项包括:是否有多余调试输出、变量名拼写、文件读写残留、数组越界、输入输出格式。我见过太多人模拟赛成绩不错,但正式比赛因为忘了删一行调试代码而整题零分。模拟赛的成绩有波动很正常。关键是每次模拟都要找到至少一个可改进的点,不用面面俱到。5.2 时间分配:第一轮只求有分,第二轮再补优化我的赛场策略是“两轮法”:第一轮快速过所有题,把能直接写出的基础题全部拿下;完全没思路的题用暴力版本先拿部分分;剩最后一小时,再回来优化最可能得分的题。这样做的好处是,不会在一道难题上耗到没时间做简单题。按测试点给分的规则下,最亏的不是难题没做出,而是简单题因为时间不够而空白。同时要练习快速判断“这道题值不值得死磕”。一个通用判断标准是:五分钟内没有形成初步思路,就先放下,做后面的题。5.3 考前整理一页“默写式模板”考前我建议每个人整理一页“默写式模板”,包含快速输入输出、排序、DFS/BFS模板、二分答案模板、常见背包循环、最短路Dijkstra模板、素数筛。注意,这套模板不是考场上抄的,而是帮你考前快速过一遍主干代码。真正上了考场,如果连模板都要现场想,说明还没准备好。整理模板的过程本身就是查漏补缺。模板不是越多越好,一页能写完才是真熟练。能写在纸上的模板,才说明你已经理解透了。5.4 草稿纸和可视化思维做题时不要只盯着屏幕空想。很多动态规划题,在草稿纸上画出取或不取的决策表,比干想快得多;很多递归题,画一棵小规模递归树,就能看出剪枝点。我要求学生每场模拟赛至少用半张草稿纸,不是为了算数,而是为了让思路有落点。这个习惯从模拟期就要养成,到了考场才能自然使用。有些同学觉得用草稿纸浪费时间,实际上恰好相反。乱画五分钟,可能省下半个小时的返工。6. 避坑实录:备赛中最常见的翻车现场6.1 只刷新题不复盘我带过的某个学生曾经刷了三百多道题,但连做三次模拟赛,成绩一次比一次差。我把他的刷题记录拉出来一看,错题几乎从不回头看,同一类字符串处理错误出现了十几次。后来强制他每道错题写一句原因,每周按考点统计,两周之后准确率就明显回升。刷题数量只是数据,复盘才是转化率。6.2 沉迷难题,看不起简单题备赛时很多人喜欢挑战难题,通过一道难题的成就感确实很足。但比赛里真正决定获奖下限的,恰恰是基础题的稳定性。省赛卷子里大量题目都是模拟、枚举、贪心和简单搜索,把这些做到快、准、稳,就已经超过多数人。不要用难题的数量麻痹自己,先把简单题练到不丢分,再谈难题。6.3 看完题解假装懂了“看题解”是备赛里性价比最低的动作。很多同学看完觉得“原来如此”,合上代码自己写又无从下手。正确的题解使用流程是:独立思考,卡住,记录卡点,看题解,合上题解重新写,第二天再写一遍。第二天还能流畅写出来,才叫真正掌握。如果只是看过,那一周后基本归零。6.4 平时用网页编辑器,考场寸步难行比赛环境和刷题网站不同,没有在线编译器,没有自动提示,也查不了资料。平时如果一直依赖网页编辑器,到了本地环境连编译参数都不熟,第一题就会浪费大量时间。建议从备赛第二周起,练习环境固定为本地编辑器加命令行编译运行,至少要懂常见的编译命令和错误输出。6.5 心态崩在最后一小时最后半小时突然发现一道题思路错了,很多人会立刻推翻重写。经验告诉我,这个时候推翻重写大概率写不完,还会导致原本正确题的代码没时间检查。更好的做法是,如果现有代码只有某几个测试点不过,先记录问题,继续验证前面的题;如果还有大量时间,再针对具体测试点打补丁。切忌在最后时刻大范围重构。最后还是分享两点私人心得带过这么多届学生之后,我越来越觉得,蓝桥杯备赛考察的不是谁刷的题多,而是谁更能稳定做对基础题。每天固定两小时,一个专题一个专题过,错题认真复盘,最后一个月坚持完整模拟。这一套流程笨,但有效。我给每个学生都会准备一个小本子,记录每一次错误类型,考前只看那几页,比翻厚厚模板有用得多。希望这篇内容能帮你少走弯路。