乐于分享
好东西不私藏

5:《NOI选手如何做LMCC第二轮试题》

5:《NOI选手如何做LMCC第二轮试题》
本文由WorkBuddy根据逐字稿生成,直播于8月12日15点。不构成学习建议,深度学习请去看回放链接:https://lmcc.ccf.org.cn/101/1010/10297.html
文末增加交流群,专门交流LMCC青少组,欢迎想要了解学习的朋友们。

讲师名片:高培淇,前NOI选手,已通过LMCC认证,现就读香港中文大学数学与AI交叉专业直博项目。本讲从选手视角(非教练、非原理),用技巧与口诀带大家通关LMCC第二轮上机测试,依次讲解:提示词编写方法 → 生成参数配置 → Python代码实现。门槛极低,零基础亦可跟上。

一、何为"选手视角"

实际竞赛(第二轮)为目标,走一条更轻松、更具体的路:提炼经验 → 总结技巧 → 快速切题 → 复用为本。技巧要能复用在几乎每道题上,所以不必写"小作文",只需"复制粘贴 + 摘抄分类 + 微调"就能写完一个高分Prompt。

提炼经验总结技巧快速切题复用为本选手视角:低门槛、可复用、直接套用

二、LMCC第二轮到底考什么

评测系统给你一个 evaluate.py(评分程序),你要补全 submission.py。系统把题目(如学生作业、三国知识)喂给你的程序,你要在判定过程中尽量拿高分——类似信息学里的"交互题"

本讲用6道例题(来自3个训练题集,含LMCC真题),规律是:

  • 每套第1题
    :包含 Prompt + 生成参数;
  • 每套第2题
    :加入 Python 实现(torch)。

💡 三块内容里 Prompt 权重最高,是重点;生成参数逻辑简单但最关键;代码实现逻辑其实很基础。

评测系统evaluate.py你的程序submission.py喂入题目(作业/知识)返回判定/分数(交互题)目标:尽量高的分数

三、提示词编写:6字口诀"卫星隔离不明"

这是专为LMCC设计的6字口诀,把Prompt拆成六大类。前四字"卫星隔离"是骨架(谐音:定位·行动·格式·示例),后两字"不明"是补丁(谐音:命令·补充)。你只需编写约 30% 的内容,剩下直接照抄题面,即可拿满分。

骨架(卫星隔离)
• 位(定位):你是一个什么助手(身份定位)
• 行(行动):任务要求 / 行动流程(先做什么、再做什么)
• 隔(格式):输出格式(纯文本 / JSON / 列表)
• 离(示例):标准示例 few-shot(多种情况逐层增加)

补丁(不明)
• 不(命令):定身份("严格的作业批改助手")、禁止语气严肃句("绝对不要…严禁…")
• 明(补充):轻描淡写关键内容(易被忽略的student_id)、堵漏洞(忽略解题过程/无关文字)

骨架:卫星隔离(谐音)补丁:不明(谐音)位=定位身份定位行=行动任务要求隔=格式输出格式离=示例few-shot摘抄题面不=命令(补丁①)定身份·禁止语气严肃句明=补充(补丁②)轻描淡写关键·堵漏洞编写30% + 照抄70% = 高分Prompt调试:输出不对就加"盐"

实战示例(以a1作业批改题为例)

题面说:读取学生作业 → 识别每题正确答案 → 判断正误 → 严格按格式输出 → 忽略"这题好难"之类废话 → 输出纯JSON(5个布尔值,不用markdown)。

用颜色法整理:黑色=直接照抄题面(可得满分50)粗体=命令("你是严格的作业批改助手""绝对不要…");斜体=补充(轻描淡写的关键内容,如 student_id、解题过程、多余字符)。b1/b2易错点在于要"补丁":去掉"于/等"介词减少犯错、虚构人物貂蝉也要列出、公元2008年须硬编码、常用角度30/45/60度直接写死。

题面(原文)读取学生作业内容识别每题正确答案判断正确性(布尔值)忽略"这题好难"等废话输出纯JSON(不用md)Prompt(整理后)你是严格的作业批改助手任务:读取作业→判断→输出绝对不要输出markdown提取student_id/忽略废话示例:{...}→[true,false...]

四、生成参数配置(一页纸速查)

三个常用参数:do_sampleenable_thinkingmax_new_tokens。考试用的是千问0.6B(小模型,别指望它多聪明),所以写好Prompt比开思考更重要。

参数
true / 开
false / 关
建议
do_sample
概率采样,随机/有创造力
贪心解码,确定/逻辑强
绝大多数 false
enable_thinking
先推理,更聪明但慢
直接输出,快且稳
逻辑复杂开,简单用false
max_new_tokens
最大生成长度,超了直接截断
先设256/512,再调大

💡 实测口诀:do_sample 多数关enable_thinking 赛时可开更稳健,但小模型开T有时反而胡思乱想(如把30说成20),所以"改一个较蠢的AI"往往比"改聪明的"更简单;max_new_tokens 无脑用256/512试,没出答案就往大调。

do_sample多数设 false贪心=确定逻辑强写诗才开trueenable_thinking复杂开T(聪明慢)简单用F(快稳)小模型T会胡想源码搜think可移过程max_new_tokens最大生成长度超了被截断先256/512没答案就调大

五、Python代码实现(聚焦torch)

篇幅所限,本讲只讲LMCC涉及的 PyTorch 基本语法。核心三步:

  • 张量 Tensor
    :多维数组(魔方)。可创建全零zeros、全一ones、随机randshape看形状。
  • 张量运算
    :加法逐元素、乘法、norm=范数(向量长度,勾三股四弦五)、dot=点积、mm=矩阵乘。
  • 自动求导 autograd
    requires_grad=True追踪,定义函数后backward()自动算梯度(一维下即导数)。

📌 真题例题·余弦相似度:分子=dot(a,b);分母=norm(a)×norm(b);再加 if 特判(范数为0不能作分母)。照抄公式即可,小学二年级数学也能做。

① Tensorzeros/ones/randshape看形状多维数组② 运算norm范数·dot点积mm矩阵乘·加法余弦相似度=照抄③ autogradrequires_gradbackward()自动算梯度torch 三步:张量→运算→自动求导

六、备考路线 + 答疑精华

学习顺序:① 先掌握第一轮概念(Prompt方法等都建立在此)→ ② 像讲师一样总结、用费曼学习法把几十个简单概念串成一棵树 → ③ 中间插入学Python(官方文档、课程、刷题、问AI)。

答疑高频问题:

  • 官方资料在哪?
     官网动态 → "LMCC资料合集",含往年真题、代码下载、在线评测、培训回放;另推荐《大语言模型》(赵鑫/文继荣)、知乎专栏、B站、Google Research。
  • 考试给torch文档吗?
     一般不给;不会就翻torch源码 Ctrl+F 查;带U盘=作弊。
  • NOI vs LMCC 思维区别?
     NOI考开放性解题、跨过一个又一个坎、背板子;LMCC考理解与归纳,逻辑不难,难在把抽象概念(盒子/Tensor/点积)吃透、能复用。
  • 第一轮多少分进第二轮?
     大致及格,具体以官网公示/问教练为准(制度可能变化)。
  • 公众号
    :高培淇「培奇的秘密基地」,课后会发PPT的Markdown文字版,可私信答疑。

一句话总结:"卫星隔离不明"写好Prompt(编30%+抄70%),生成参数记住"do_sample多数关、thinking看题、max先256/512",torch只抓张量·运算·autograd三步——以真题为镜,以复用为本,以效率为中

交流群,失效联系:wswrlm