很多学生第一次接触信息学奥赛时,最容易被两件事卡住。
一件是题目读不懂。
明明每个字都认识,但不知道题目到底在考什么。
另一件是题解看得懂,自己写不出来。
看别人分析时觉得顺理成章,轮到自己动手,状态怎么设、循环怎么写、边界怎么处理,马上开始混乱。
AI 出现以后,这两个问题好像都有了快捷解法。
题目读不懂,可以让 AI 解释。
代码写不出,可以让 AI 生成。
报错看不懂,可以让 AI 帮忙检查。
这当然有用。
但也正因为太有用,它很容易把学习带偏。
AI 用得好,会变成信息学奥赛的高质量陪练;用得不好,会变成逃避思考的答案机器。
这两种用法,最后得到的结果完全不同。
一种是在 AI 的帮助下,把题目理解得更清楚,把错误暴露得更快,把复盘做得更细。
另一种是把最关键的思考过程外包出去,看似效率很高,实际上自己的脑子参与越来越少。
信息学奥赛和普通编程学习不太一样。
它远远超出“把代码写出来”这一层。
一段程序能不能过题,取决于前面很多层判断。
题意有没有读准。
模型有没有抽对。
算法复杂度能不能承受。
边界条件有没有漏。
代码实现是否和思路一致。
测试数据是否覆盖极端情况。
这些东西,AI 都可以辅助,但不能替学生长出来。
信竞训练的核心,是建立从题目到模型再到程序的完整链条。
所以利用 AI 学信竞,第一条原则就很简单:不要一上来要完整答案。
很多学生遇到题,第一反应是把题面丢给 AI,然后问“这题怎么做”。
AI 很快会给出算法名、思路、代码。
短期看,问题解决了。
长期看,最重要的训练被跳过了。
因为题目最有价值的地方,恰恰在于最开始那段“不知道怎么下手”的时间。
这段时间里,学生会尝试读条件、看数据范围、猜模型、想反例、试小样例。
这些动作看起来慢,但它们是在训练问题感。
如果一开始就让 AI 给结论,学生得到的是结果,能力本身没有长出来。
AI 最适合介入的时机,应该放在学生完成第一轮思考之后。
比较好的做法,是先让学生自己完成三个动作。
第一,把题意用自己的话复述一遍。
第二,写出目前想到的朴素做法。
第三,说明卡在哪里。
然后再问 AI。
比如可以这样问:
“这道题我理解为:……我想到的暴力做法是……复杂度大概是……但数据范围不允许。请不要直接给代码,先提示可能的优化方向。”
这种问法和“直接给题解”完全不同。
前者要求 AI 做教练。
后者把 AI 当代写。
教练会保留训练过程。
代写会吃掉训练过程。
第二个用法,是让 AI 做题意翻译器。
信息学奥赛里很多题,难点不在算法本身,而在题意包装。
有的题讲道路和城市。
有的题讲小朋友排队。
有的题讲机器人移动。
有的题讲字符串变换。
故事不同,结构可能相似。
初学者最难的是从故事里抽出结构。
这时候 AI 可以帮忙做一件很有价值的事:把题目翻译成更朴素的数学和计算语言。
但要注意,不要让 AI 直接判断算法。
更合适的问题是:
“请把题面里的对象、操作、限制条件和目标分别列出来。”
“请用表格整理输入、输出、数据范围、需要求的量。”
“请给一个很小的样例,手动模拟过程。”
这些问题不会直接跳到答案,却能把题目从一团故事拆成清楚的结构。
学信竞最容易出问题的地方,是题目还没读清楚,就急着套模板。
第三个用法,是让 AI 做反例生成器。
很多学生写算法时,最容易陷入一种错觉:样例过了,思路大概就对了。
但竞赛题里的样例通常很温柔。
它只说明程序在几个公开数据上没出错,不说明算法在所有情况都成立。
尤其是贪心、动态规划、搜索剪枝这类题,反例非常重要。
AI 在这里可以发挥很大作用。
做完一个思路后,可以把思路描述给 AI,然后要求它只做一件事:找反例。
比如:
“我打算每次选择当前收益最大的物品,这个贪心是否可能出错?请构造一个小反例。”
或者:
“我这个动态规划状态只记录 i 和 j,没有记录上一次选择,请判断是否可能有后效性。”
这种用法很适合训练严谨性。
因为很多时候,问题出在过早相信自己的想法。
AI 如果被用来找漏洞,比被用来给答案更有价值。
第四个用法,是让 AI 做调试助手,但不能让它直接接管调试。
调试是信竞学习里很关键的一环。
很多能力都长在一次次 WA、RE、TLE 里。
数组为什么越界。
初始化为什么漏了。
循环边界为什么少算一位。
复杂度为什么过不了。
递归为什么爆栈。
这些错误表面上是代码问题,背后往往是思维问题。
如果每次出错都直接让 AI 改代码,学生会错过和自己错误对话的过程。
更好的方式,是让 AI 提示排查路径。
比如:
“这段代码在样例 2 输出不对,请不要直接给修改后的代码,只列出可能的错误来源,并告诉我应该打印哪些中间变量。”
或者:
“这段程序 TLE,请帮我分析可能的复杂度瓶颈,但不要改写代码。”
这样 AI 的角色更接近调试教练,而非维修工。
调试的目标,是看清错误从哪里来,而不只是让代码赶快通过。
第五个用法,是让 AI 做复盘工具。
很多学生刷题最大的问题,是题做完就过去了。
AC 了,很开心。
WA 了,改到通过。
然后继续下一题。
看似刷了很多题,但积累并不明显。
原因在于没有把经历变成结构。
一道题做完以后,最好能沉淀出几件事:
这题的核心模型是什么?
题面里哪些词暗示了这个模型?
第一次卡在哪里?
错误发生在读题、建模、复杂度、边界,还是实现?
下次遇到类似题,第一反应应该是什么?
AI 很适合帮忙整理这种复盘。
可以把题目、自己的思路、错误代码、最终做法一起给它,然后要求输出一份学习记录。
但这份记录最好聚焦“个人错误总结”,少写泛泛的题解摘要。
题解网上很多。
个人错误才是最有价值的数据。
刷题如果没有复盘,只是在增加经历;复盘之后,经历才会变成能力。
第六个用法,是让 AI 充当“分层讲解器”。
信竞学习里,经常会遇到一个问题:同一个概念,有的解释太浅,有的解释太深。
比如动态规划。
有的资料只说“从前面的状态推出后面的状态”,太空。
有的资料直接上复杂题,初学者又跟不上。
AI 的优势在于可以按层次解释。
可以要求它先用生活例子讲一遍。
再用小数据手推一遍。
再写伪代码。
再解释复杂度。
最后再给一段代码。
这种从直觉到形式化的过程,对初学者很有帮助。
但需要控制顺序。
如果直接让 AI 给最终代码,理解会很浅。
如果先让它讲例子、讲状态、讲边界,再看代码,效果会好很多。
代码应该放在理解之后,不能抢在理解之前。
第七个用法,是让 AI 生成训练题,但题目难度要可控。
很多学生学完一个知识点后,不知道该做什么题。
直接刷题库,难度可能跨度很大。
AI 可以根据知识点生成几个小练习。
比如刚学完前缀和,可以让 AI 出 5 道从简单到稍难的题。
刚学完 DFS,可以让 AI 出 3 个网格搜索题,并要求每题只变化一个条件。
刚学完背包,可以让 AI 区分 01 背包、完全背包、多重背包,分别给小样例。
这种训练的好处是坡度可控。
但也要小心,AI 生成的题目可能不严谨。
所以更适合作为辅助练习,不要完全替代正规题库。
AI 生成题适合练手感,正式提升仍然要回到高质量题库。
第八个用法,是让 AI 帮忙建立知识地图。
信竞知识点很多,初学者很容易觉得散。
语法、模拟、枚举、排序、递归、搜索、贪心、动态规划、图论、数论、数据结构。
每个点下面又有很多分支。
如果只是一题一题做,很容易不知道自己在学什么。
可以让 AI 帮忙整理学习路线。
但路线不要太宏大。
比如可以按一个月为单位:
第一周练模拟和枚举。
第二周练数组、字符串、排序。
第三周练递归和搜索。
第四周做综合题和复盘。
每一周都配合题目类型、错误记录和复盘问题。
这样 AI 的作用会从制造资料,转向帮助安排学习节奏。
信竞学习不能只堆知识点,还要形成一条能持续推进的训练路径。
不过,AI 再好用,也有几条边界不能越过。
第一,不要在比赛或测评中用 AI 作弊。
这不仅破坏规则,也会破坏学习本身。
竞赛训练的意义,是让学生在压力下独立建模、独立实现、独立调试。
如果把这个过程交给 AI,成绩即使好看,也没有含金量。
第二,不要把 AI 的回答当标准答案。
AI 会出错。
它可能误读题意。
可能给出错误复杂度。
可能写出样例能过但隐藏数据过不了的代码。
也可能把一个不成立的贪心讲得很有道理。
所以 AI 的回答必须被验证。
跑样例。
造反例。
看边界。
查题解。
自己推导。
这些步骤不能省。
第三,不要让 AI 代替手写和手推。
信息学奥赛远远超出阅读理解。
看懂不等于会做。
会复述不等于能实现。
让 AI 解释十遍,不如自己把一个小样例完整推一遍。
让 AI 改十次代码,不如自己找出一次边界错误。
AI 可以缩短反馈时间,但不能替代亲自动手形成的能力。
所以,如何利用 AI 工具学习信息学奥赛?
答案并不等于“多问 AI”。
更准确地说,是把 AI 放到合适的位置。
不会题意时,让它帮忙拆条件。
有了思路后,让它帮忙找漏洞。
写完代码后,让它提示调试路径。
做完题后,让它整理个人错误。
学新概念时,让它分层解释。
阶段训练时,让它辅助规划题目。
但建模、判断、证明、实现、复盘这些核心动作,仍然要尽量由学生自己完成。
AI 最好的位置,是让学生更清楚地看见自己的思考过程。
信息学奥赛的价值,从来不只是学会几种算法。
它训练的是面对一个陌生问题时,如何读懂它、拆开它、抽象它、验证它,再把它变成可以运行的程序。
AI 会让资料更容易获得。
会让解释更随手。
会让调试反馈更快。
但也会让偷懒更隐蔽。
最后拉开差距的,是谁在 AI 的帮助下,仍然保留了自己的思考、手推、验证和复盘。
用 AI 学信竞,核心是让思考变得更清楚,而不只是让答案来得更快。

果壳一只羊

夜雨聆风