当一道 timber 函数式编程思维题摆在你面前,读懂题面就花了 20 分钟,debug 时发现理解错了题意,这种痛苦相信每个 OIer 都懂。 HydroOJ 的题面往往承载着完整的背景故事,但对于初赛选手或是跨语言学习者来说,理解题意本身就是一道门槛。
今天开源的 hydrooj-plugin-ai-reader(AI 题面理解助手),不是来抢走你 AC 的成就感的,而是帮你用最短的时间抓住题目的命门。
痛点:题面太长,抓不住重点
以一道典型的 OI 题为例:
“Alice 和 Bob 在一张 n 个点 m 条边的无向图上玩游戏。每个点有一个权值……(500 字背景)……要求你输出一个最小的 k 使得对于所有满足……(数学定义)……的方案,都能……(条件判断)……”
读完这段文字,你的大脑需要:
- 过滤掉 Alice 和 Bob 的故事线
- 提取形式化定义:图、点权、阈值 k
- 识别约束条件: 意味着什么?
这不仅耗时,还容易看错。特别是在多校训练中,时间宝贵,读懂题意就赢了一半。
解决方案:AI 题面理解助手
这个插件在 HydroOJ 的每道题目右侧新增一个"🤖 AI 题面理解"按钮。点击后,你会看到:
1. 极简题意概括
用 1-2 句话说明"给定什么,求什么",去掉所有背景故事。
*示例:*给定无向图,点带点权,求满足连通块最大值限制的最小删边代价。
2. 关键信息提取
- 数据范围速查: 需要线性或线性对数算法
- 隐藏约束:无重边、权值非负、保证有解等容易忽视的前提
- 边界情况:、、权值相等时的特殊处理
3. 思考路径(苏格拉底式提问)
不会告诉你"用动态规划"或"建最短路",而是问:
- “如果固定答案 k,能否快速检验可行性?”(暗示二分 or 贪心检验)
- “观察数据范围,什么样的复杂度会 TLE?”(暗示算法复杂度选择)
这是一种启发式学习,既保护了解题乐趣,又避免了在错误的方向上浪费时间。
技术架构:与 HydroOJ 深度融合
域级开关控制(安全第一)
与市面上其他插件不同,默认全站关闭,需在「控制面板-域设置」中手动开启。这保证了:
- 正式比赛期间可完全禁用,维护公平性
- 不同训练域可灵活配置(入门域开启,高阶域关闭)
- 防止非目标用户误用(如将 OJ 用于就业笔试时)
智能缓存机制
同一道题的 AI 分析只需生成一次,存储于 MongoDB,后续所有用户共享。减少 API 调用成本的同时,也保证了同一道题提供的思考角度具有共识性。
零侵入式集成
- 前端:通过
NamedPage注入侧边栏,符合 Hydro 原生 UI 风格(使用 Hydro 的卡片、按钮、排版系统) - 后端:独立路由
/p/:pid/ai,权限继承 Hydro 的PRIV_USER_PROFILE - 风格统一:输出采用 Markdown + KaTeX,与题面渲染一致
提词工程(Prompt Engineering)
核心提示词设计遵循**“教渔不授鱼”**原则:
1 | 角色:资深 OI 教练 |
实际调用的 DeepSeek-V3 模型在此约束下,输出质量足以媲美教练手写 hint。
快速开始
安装
1 | # 进入服务器 |
配置(管理员)
进入「控制面板-系统设置」,添加 AI 配置(支持 GitCode/OpenRouter/DeepSeek 等):
1 | ai-summary: |
启用功能
进入「域设置-🤖 AI 题面理解设置」,勾选启用。此时该域下的所有题目右侧都会出现 AI 按钮。
实际效果对比
原题面片段(300 字):
小 K 是一位著名的嗜睡病患者,他每天都在与无垠的睡意作斗争。在这一天,他收到了 n 个任务,第 i 个任务有一个截止时间 d_i 和需要的时间 t_i……
AI 简化后:
题意:单资源调度问题,n 个任务有截止时间和耗时,求最大可完成的任务数。
关键:,,暗示需 或更优。
思考:“如果有个任务耗时很长但截止时间很晚,它是否一定比耗时短且截止时间早的任务优先级低?”(暗示贪心按截止时间排序)
价值:20 秒抓住题目是"带截止时间的调度",而非浪费 3 分钟去同情小 K 的嗜睡症。
使用建议 & 边界
适合开启的场景
- 新手入门域:帮助初学者学习如何读题、提取形式化模型
- 英文题面训练:快速获取中文题意概括,降低语言门槛
- 题单复习:快速回顾题目核心,验证自己对题意的记忆是否准确
建议关闭的场景
- 正式比赛期间:维护公平性(可在比赛配置中单独关闭)
- 原创题校考:防止外校选手利用 AI 快速理解题意优势
局限性
- 无法替代独立思考:不提供算法代码,不提供具体转移方程
- 可能有幻觉:AI 可能对复杂题意理解有偏差,最终以原题面为准
- API 成本:生成一次约消耗 1-2k tokens,请自行评估成本
结语
hydrooj-plugin-ai-reader 不是来帮你 AC 的,而是帮你更快地进入状态。
OI 训练的本质是思维训练,而不是阅读理解题。当你能在 30 秒内通过 AI 摘要确认"这题是线段树维护区间众数",然后立即开始思考具体怎么维护,你的训练效率就已经超过了还在读背景故事的同学。
GitHub 地址:github.com/your-repo/hydrooj-plugin-ai-reader
讨论/反馈:欢迎提 Issue 或加 HydroOJ 用户群交流
祝你在 AI 的辅助下,把更多时间花在真正的算法思考上。