权威源 md
边界
| 技能 | 分工 |
|---|---|
| 本 skill | 权威 md 修订 → tk / OJ |
gesp-text |
讲义 tex(不 poke OJ) |
wechat-md |
每日知识点微信稿 |
cspj-exam-report |
CSP-J 周作业报告(问卷星) |
共享参考:objective-md-format.md · reputable-sources-layout.md
开工必问(写库闸门)
改本机权威 md 可以先做。登录、导入、改题面、rsync、跑写库脚本之前,先问正在操作的这位老师,等答复。没问清就停。
- 你是哪位老师?
- 这次登录用谁的账号?要用户名。密码只在当次输入,不写进文件,不写进对话归档。
- 写哪一条线:客观题进 tk,还是 GESP 编程题只改 OJ 的
GE*?
不要默认用机器主人、七七、root、赵宇琦,也不要复用 /tmp 里的 token、浏览器里别人的 cookie、SSH 生产密钥。这个账号返回无权限时,停下来说明缺什么,不要换成更高权限的账号顶上。
登录成功后先看角色,再写库:
| 去哪 | 账号要有 | 不够时 |
|---|---|---|
| tk.qiqioj.cn 导入客观题 | 管理端老师(isAdmin)。学员不行 |
停 |
OJ 更新 GE* 题面 |
后台角色 admin 或 root。题目管理接口只认这两个 |
停 |
| 权威仓 git push | 这位老师自己的 Gitee 身份。push 前再问一声 | 不要用别人的 git 账号提交 |
rsync 到生产机、在服务器上跑 apply_gesp_statements.py,用的是机器主人的 SSH,不是老师账号。老师没明确说「这次就用我有权限的这台生产机」之前,不要走 SSH。能用老师自己的 tk / OJ 登录写的,就用登录写。
两条线,不要混:
| 线 | 稿 | 学生看到 | 写哪 |
|---|---|---|---|
| 客观题 | 10_卷子/ |
tk | tk 按标题 upsert → poke OJ 客观题表 |
| GESP 编程题 | 编程题/{一…八}级题面收集.md |
OJ 编程题 | 只 UPDATE GE*,不走 tk |
依据:2026-08-14 标签定稿、2026-08-15 GESP 编程题写库(apply_gesp_statements.py)、check-md 一级核对报告、权威稿扫描、OJ 现网客观题列表。
何时用
- 「把这套卷的 md 修好再同步两站」
- 「权威源里这题选项 / 公式 / 标签 / 题型不对」
- 「GESP 编程题对照官方 PDF / 核对 md / check-md / 审题面」
- 「把一级题面收集写进 OJ」
铁律(共用)
- 权威仓只有
~/Documents/reputable-sources/。不要写回已删目录,不要去 Desktop「权威文档整理」。 - 官方 PDF 是终审(
00_官方PDF/gesp/)。拿不准记台账,不准编。 C++、++i、a++、*、==、^不能裸写。进行内代码或$...$。- 凭证、cookie、同步密钥、数据库密码不写进本文件,也不进 skillhub 包。写库前先备份。写库账号只用来自「开工必问」。
目录
~/Documents/reputable-sources/ Gitee sonicdance/reputable-sources
├── 00_官方PDF/gesp/ 终审 PDF(不进 git)
├── 10_卷子/ ★客观题整理稿
├── 20_图片/ 客观题题图(线上 /opt/hoj-question-imgs/img/)
├── 编程题/ ★GESP 编程真题题面收集.md + images/ + *_pdf页/
├── 40_修复台账/
└── 索引.md
服务器活副本:/opt/reputable-sources/(夜间脚本也读这里;不要 rsync 到已不存在的 /opt/hoj-build/ops/reputable-sources)
线一:客观题 → tk → OJ
文件第一行就是 1.(2分)…,不加文件头。C++ 卷名 GE1-CPP-2403.md;Python 卷名跟现有文件走。
客观题专条:答案只认官方 PDF,拿不准记 40_修复台账/;题型四种(不要说「只有选择和判断」);标题全卷 -Qxx,不要 P/F;标签用现网长名,不要「基础」/ CPP / 类型;按标题 upsert 保 id;OJ 客观题只收 GESP(非图形化)和 CSP;填空答案含「参考程序 / 见附图」的不进 OJ(编程真题走线二)。
题型(两站同一套)
tk 库:SINGLE / MULTI / JUDGE / FILL。
OJ 库:0 单选 / 1 多选 / 2 判断 / 3 填空。
tk 管理端筛选、学生作答分段、OJ 客观题列表筛选项,都是这四个。
「读程序 / 完善程序 / 实操」是标签(或卷名里的实操),不是第五种题型。tk 另有「理论 / 实操」筛选,靠标题是否含「实操」,不是 type 字段。
| md 括号 | 入库 | 写法 |
|---|---|---|
[单选题] |
单选 | A–D 四行;答案一个字母 |
[多选题] |
多选 | 选项照写;答案字母集合。稿里 AB 或 A,B 都行,导入后规范成 A,B |
[判断题] |
判断 | 不写 A/B 行;答案 对 / 错。OJ 同步时自动补 A=对 / B=错 |
[填空题] |
填空 | 无选项行;多空 \|\| |
[实操题] |
填空 | 仅 tk 解析器认这个括号,当 FILL。OJ 文本解析器不认。答案若是「参考程序见附图」→ 不进 OJ |
权威稿 824 份 md、约 2 万题块的实际分布(2026-08-17):
| 科目 | 单选 | 多选 | 判断 | 填空 | 实操括号→填空 |
|---|---|---|---|---|---|
| GESP C++ | 有 | 无 | 有 | 无 | 无 |
| GESP Python / 图形化 | 有 | 无 | 有 | 无 | 有(编程大题占位) |
| CSP-J | 有 | 无 | 有 | 有 | 无 |
| CSP-S | 有 | 无 | 有 | 无 | 无 |
| 机器人理论 | 有(通常 20) | 有(通常 5) | 有(通常 5) | 无 | 无 |
| 机器人实操卷 | 看卷 | 看卷 | — | — | 有(搭建说明) |
| 软件编程 | 有 | 无 | 有 | 无 | 有 |
GESP 真题客观部分常见是 15 单选 + 10 判断,不能据此说题型只有两种。机器人理论卷学生端按「单项 / 多项 / 判断」分段,每段题号从 1 再数。
单题格式
切题只认行首 1. / 1、。题干、选项、解析里不要把 2、…… 放在行首,会被切成新题。
1.(2分)[单选题]
标题:GE1-CPP-2312-Q01
标签:GESP, GESP·一级, C++, 运算符与表达式
如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足「小于等于 a 且是 4 的倍数」的整数中最大的?( )
A、`(a & (~3))`
B、`((a << 2) >> 2)`
C、`(a ^ 3)`
D、`((a - 1) | 3) + 1`
答案:A
解析:`~3` 低两位为 0,`a & ~3` 清掉 a 的低两位。
16.(2分)[判断题]
标题:GE1-CPP-2312-Q16
标签:GESP, GESP·一级, C++, 变量与数据类型
在 C++ 中,所有变量都必须先声明后使用。( )
答案:对
解析:C++ 中变量必须先声明才能使用。
21.(4分)[多选题]
标题:JQR4-2603-Q21
标签:机器人技术等级考试, 机器人·四级
下列能增强模型稳定性的做法有哪些?( )
A、多采用三角形结构
B、使模型与地面的接触面积增大
C、多采用四边形结构
D、使模型与地面的接触面积减小
答案:A,B
解析:三角形不易变形;增大接地面积更稳。
4.(2分)[填空题]
标题:CSPJ-栈队列-1-Q04
标签:C++, CSP-J, 栈队列
一个空队列依次执行 `push(2)`、`push(4)`、`push(6)`、`pop()`,此时队首元素是 。
答案:4
解析:入队 2、4、6 后队首为 2;`pop()` 去掉 2,队首变为 4。
- 选项行首只认大写
A、/A./A.。 - 代码:单行反引号,多行围栏(
cpp/python小写,围栏单独成行)。 - 公式:数字/字母公式才
$...$。代码里的x**y、int *p、a^b原样进代码。
标题
全卷连续 Q01、Q02…。权威源按 标题: 建索引,后缀必须是 -Q+数字,否则挂不上卷。
| 卷种 | 标题 |
|---|---|
| GESP | GE{n}-{CPP\|PY}-{YYMM}-Q{NN}。客观部分通常 Q01–Q15 单选、Q16–Q25 判断;有实操占位则 Q26 起 |
| CSP | 卷内已有前缀 + -Q{NN},全卷连续。无级别 |
| 机器人 | JQR{n}-{YYMM}-Q{NN},判断/多选也是 Q,不另开号 |
同卷 标题: 前缀必须与文件名一致。缺标题就无法按 id 更新。
标签(现网词表)
逗号分隔。OJ 现网考试类别只有 GESP / CSP-J / CSP-S(机器人不同步所以筛选项里没有)。语言现网是 C++ / Python。级别一级~八级。知识点按 11 大类。
| 维度 | 怎么写 | 不要写 |
|---|---|---|
| 考试 | GESP · CSP-J · CSP-S · 机器人技术等级考试 · 软件编程等级考试 |
机器人等级考试 |
| 级别 | 组合名:GESP·四级、机器人·五级、软件编程·四级。CSP 不写级别 |
1级 |
| 语言 | C++ · Python · 图形化 · C语言 · Scratch。机器人卷不写语言 |
CPP PYTHON cpp |
| 知识点 | 下表规范名,可多个 | 类型 循环 运算符 DP 树 哈希 基础 |
| 题型标签 | 需要时:读程序 完善程序 实操 |
程序阅读 |
权威稿实例(稿里已经是这样,不要改回短名):
- GESP:
GESP, GESP·四级, C++, 读程序, 循环结构 - CSP-J:
C++, CSP-J, 栈队列 - 机器人:
机器人技术等级考试, 机器人·四级 - 软件编程:
软件编程等级考试, 软件编程·四级, 图形化, 字符串处理
知识点只从这里选(与 KNOWLEDGE_GROUPS 一致)。不在表里就停下来问。
| 大类 | 规范名 |
|---|---|
| 计算机基础 | 计算机基础、计算机网络、数据编码与进制、流程图、编程环境 |
| 语言基础 | 变量与数据类型、运算符与表达式、输入输出、字符串处理、数学库函数 |
| 控制结构 | 顺序结构、分支结构、循环结构 |
| 函数与递归 | 函数、递归、递推 |
| 数据结构 | 数组、链表、栈队列、树与二叉树、堆、哈希表、指针、结构体 |
| 算法 | 模拟与枚举、排序、二分查找、搜索、贪心、分治、动态规划、高精度、复杂度分析 |
| 数学 | 数论、组合数学、进制与数制、位运算 |
| 图论 | 图论基础、最短路、最小生成树、拓扑排序、强连通分量 |
| 字符串进阶 | 字符串哈希、KMP、AC自动机、Manacher、后缀数组、后缀自动机 |
| 机器人技术 | 机械结构、电子电路、传感器、控制器、通信、智能控制、搭建、简单机械、齿轮与齿轮比、电机 |
| 软件编程特色 | Turtle库、列表、元组、字典、文件操作、数据可视化、广播、克隆、画笔、积木、流程控制 |
站点仍能把旧名映射过来(CPP→C++、类型→变量与数据类型),整理稿只写规范名。tk 导入对话框里的示例还是旧短名,不要照抄。
Markdown 误伤
两站走 markdown-it。裸写会被插件吃掉。OJ 前端有转义兜底,权威稿本身必须写对。
| 裸写 | 变成 | 稿里 |
|---|---|---|
C++ ++i a++ |
下划线 <ins> |
`C++` `++i` |
4*3*2 int *p |
斜体 | $4\times3\times2$;指针进代码 |
x**y 2**3 |
加粗 | 代码原样,不要改成公式 |
a==b |
高亮 | `a==b` |
正文 x^2 |
上标 | 真公式 $x^{2}$;异或 `a^b` |
同步两站(客观题)
# 仅当这位老师明确说「用我有权限的生产机」时才 rsync。否则跳过,直接用老师的 tk 登录导入。
rsync -a --exclude '.git' --exclude '00_官方PDF' --exclude '20_图片' \
~/Documents/reputable-sources/ root@192.144.128.63:/opt/reputable-sources/
- 用开工必问里这位老师自己的 tk 账号登录管理端,文本导入该卷 md。先预览,失败 0 再落库。
POST /api/import/questions,source=md,按 标题 upsert,保留原 id,并回挂试卷。不要读/tmp/tktoken.txt,不要套别人已经登录的 cookie。 - 抽查 tk。该进 OJ 的题:单题保存会 poke;批量导入后若没跟上,用这位老师自己的 OJ 管理端「同步题库站」(同样要
admin或root)。不要把同步密钥写进技能。 - 权威仓改完再 commit/push Gitee
reputable-sources(用这位老师自己的 git 身份,push 前再问一声)。
线二:GESP 编程题 → 核对 md → UPDATE OJ
学生看到的是 OJ 编程题(problem 表),不是 tk。不要把编程题导进客观题库。讲义 tex 不走这条线(只改 md,不动 tex)。
稿在哪
~/Documents/reputable-sources/编程题/
├── 一级题面收集.md … 八级题面收集.md
├── 信息素养大赛C++决赛题面收集.md (同一套字段;不写进 GE*)
├── images/ 题图 png(Glob/Grep 看不见二进制,用 ls / Read 完整路径)
├── {级}_pdf页/ 官方 PDF 拆页图,核对用
└── {级}_checkmd验证报告/ 只读审计;脚本结论必须人复核
配图也可能在同仓 20_图片/。写库必须把图带上。
官方 PDF:~/Documents/reputable-sources/00_官方PDF/gesp/GESP-{级}-{C++|Python|图形化}-{场次}.pdf。
md 文件头里若还写 Desktop「权威文档整理」,以本机权威仓为准,不要去 Desktop。
CCF 按场次整包发。图形化只到四级;七/八级 202312 才首开。缺某场先对 CCF 发布清单——「官方未发」不是文件丢了。那种场次无 PDF,文本比对降级为洛谷题页。
真值分工:
| 源 | 管什么 |
|---|---|
| 官方 PDF | 终审;图以 PDF 内嵌/拆页为准。PDF 文字层有排版空格,不要拿来做脚本逐字比对 |
| 洛谷题页 DOM | 题号、八档难度名、交叉核对。公式取页面真实字符(≤ × ⋯ ²) |
| 第三方 OJ | 仅冲突旁证。官方 vs 洛谷打架且 ≥2 个 OJ 一致,才标「官方疑似笔误」 |
不要用洛谷 dump 当正文源,不要用洛谷 CDN 图。 难度用洛谷题面展示名,不要用 API 整数定档。洛谷网页是 普及−(U+2212),且网页没有「(红)/(橙)」字样——md span 里的颜色是稿自己加的。
md 一题长什么样
## [202303] T1 每月天数(B3835) <span style="color:#E6312D">—— 入门(红)</span>
### 题目描述
### 输入格式
### 输出格式
### 样例解释 ← 没有就整节省略
### 输入输出样例 ← **样例 #1** / 输入: / 围栏 / 输出: / 围栏
### 数据范围 ← 官方有则收;官方无而洛谷有则按洛谷补
- 标题行:
[场次] T1|T2 中文名(Bxxxx)+ 难度 span。md 标题不收「较难 / 不常考 / TLE」这类批注。 - 难度八档展示名:入门 / 普及- / 普及 / 普及+/提高− / 提高 / 提高+/省选- / 省选/NOI- / NOI。一级入门现网 span 是红
#E6312D,不要改成绿。 - T1/T2 跟官方 PDF 出场顺序,不要跟洛谷题号大小。例:202303 一级「每月天数 B3835 → 长方形面积 B3834」;二级「画三角形 B3837 → 百鸡问题 B3836」。
- 公式
$...$。图相对路径](images/…);写库改成/api/public/img/gesp-…。 - 不要收:考场「特别提醒」、参考程序、题目背景(洛谷有这块是链到选择/判断,md 按设计不收,不是漏)。洛谷「说明/提示」常把样例解释和数据范围揉在一起,md 要拆开。
- 不要改 OJ 时限、内存、测试数据。标题一般也不改(唯一例外见 GE5024)。
核对(check-md)
只读审计,不要自动改 md / 图 / PDF。人看完再动手。
- 图对 PDF;文字可对洛谷 DOM。分 内容差异(归一化后中文仍不同,必须人处理)和 风格差异(LaTeX↔字符、引号、全半角、千分位、样例解释省略「对于样例 N」——仅提示)。
- 官方/洛谷笔误标「官方笔误,md 正确,勿改」,不要改回去。已定:
- B3865 小杨的 X 字矩阵:官方 PDF 漏$N$
- B4034 小杨购物:样例 2 解释误写成「样例 1」
- B3954 乘法问题:洛谷缺「行」字 - 一级 check-md 表在
编程题/一级_checkmd验证报告/。一级_核对报告.md只是搬家说明,不要追讲义工程当写库源。
写进 OJ
脚本:ops/scripts/apply_gesp_statements.py,映射 ops/scripts/gesp_map.json。源必须是 reputable-sources/编程题/。
- 映射按内部
id(gesp_map.json),不要只按problem_id字符串盖库。 - 只 UPDATE 题号
GE*。历史上曾有的同题G*副本(如G20231202_*、G240301_*、G5008、G5022)已于 2026-09 从 OJ 删除,勿再写库。 - 不要写
CD*/WLX*/WL*。 - 样题 / 模拟 / 青春版:只做格式,不盖真题全文。样题不在权威 md 里就不要硬填。
- GE5024 / G5024:强制「晚宴」P17011。现网曾误成「最大互质和」,用户已裁定用晚宴。
- 图:从
编程题/images/(或20_图片/)拷到/hoj/file/md/gesp-*.png。Glob 会跳过 png,不要报缺图。禁止换成洛谷 CDN。 - 写库前备份
problem题面(历史表名problem_stmt_bak_gesp_20260815)。不要改时限/内存/测试数据。 - 2026-08-15 已写过一轮(约 206 题)。再跑先看映射和备份,不要当首次导入新建题。
# 仅当这位老师明确授权生产机时才 rsync。默认用老师自己的 OJ 管理账号改 GE*。
rsync -a --exclude '.git' --exclude '00_官方PDF' \
~/Documents/reputable-sources/ root@192.144.128.63:/opt/reputable-sources/
写库用开工必问里这位老师自己的 OJ 管理账号(admin 或 root)更新 GE* 题面。没有这个角色就停,不要改用机器主人的 root。只有老师明确说这次就用自己有权限的生产机时,才 rsync 权威仓,并在服务器上备份后跑 apply_gesp_statements.py(参数以脚本 --help 为准)。抽查 OJ 题面页,图要能打开 /api/public/img/gesp-…。
自检
客观题:
- [ ] 文件在
10_卷子/,第一行就是题号 - [ ] 题型括号是四种之一(或实操→填空);判断无 A/B 行;多选答案是字母集合
- [ ] 每题有
标题:,全卷连续 Q,前缀与文件名一致 - [ ]
标签:能在词表或同卷现网对上;无 CPP / 类型 / 基础 / P 号 - [ ]
++*==不裸写;围栏成对 - [ ] 预检 0 失败后再落库;tk 抽查过;该进 OJ 的题 OJ 上也对(作者栏现网是
tk-sync) - [ ] 用的是这位老师自己的 tk 老师账号;无权限时停了,没有换成别人的登录
GESP 编程题:
- [ ] 改的是
编程题/{级}题面收集.md,不是洛谷 dump、不是 Desktop 整理稿 - [ ] 对照过官方 PDF(或「官方未发」时的洛谷题页);T1/T2 跟 PDF 出场顺序
- [ ] 字段只有描述/输入/输出/样例解释/样例/数据范围;无题目背景、无参考程序
- [ ] 图在
编程题/images/,写库用站内路径,没用洛谷 CDN - [ ] 只 UPDATE
GE*;没动已删除的G*副本、CD/WLX;GE5024 仍是晚宴 - [ ] 用的是这位老师自己的 OJ
admin或root;没有就停了,没有改用机器主人的 SSH - [ ] 没改时限、内存、测试数据;写库前有备份