Imported from Dynesshely/Competition (
AGENTS.md). Install upstream withnpx skills add Dynesshely/Competition. Copyright stays with the author.
## 编码
代码风格
C++
- 始终使用 bits/stdc++.h 头文件,不要别的头文件
- 使用 using namespace std;
- 始终使用 printf/scanf 并从 stdin 和 stdou 进行读写,若有 freopen 等代码一定要去掉 但对于部分特殊题目如提交答案题,你根据用户的指示来决定是否使用 freopen 来读写文件
- 标识符符合小驼峰规则
- 函数命名遵从 doSomething 风格,对于如 dfs 等算法函数可以直接使用小写原名
- 变量命名用缩写但尽可能保留含义如:visited -> via, row -> r, col -> c 等,偶尔可以保留全称如:width, height, x, y, pos_x, pos_y 等
- 尽量少用宏,如果提供的代码包含宏,请全部展开
- 不要有任何注释内容
- 不要有任何调试输出
- 不要有任何与 AC 题目无关的代码(如测试代码、模板代码等)
- 对于流程明显的题目,使用 input(), process(), output() 三段式结构,其余计算与输出同步进行的题目除外
- 对于只有一条语句的 for, if, else, while 等控制结构,去掉大括号来压行
智能解题流程
从零到 AC
- 爬取题目 —
python3 website/scripts/luogu.py <PID>生成.problem.md(若不存在) - 编写代码 — 遵循本文件代码风格约定编写
.cpp - 格式化代码 — 编写后必须执行
clang-format -i <.cpp>(配置位于仓库根目录.clang-format),确保代码风格一致 - 编译测试 —
g++ -std=c++17 -O2 -fsyntax-only编译检查语法,用题面样例验证正确性 - 在线评测 — 确保 daemon 已启动(若检测到用户已经手动启动,则你无需启动,直接使用 CLI 即可)且浏览器扩展已连接后,使用
luogu submit <.cpp>提交洛谷在线评测:- AC 100 分:自动进入步骤 6 编写题解并提交 git,无需人工等待验收
- 非 AC:根据题目难度决策:
- 入门 / 普及−:重试一次,修正代码后再次提交(最多 3 次尝试)
- 提高+ / 省选 / NOI-:放弃本轮,移入
documents/high-difficulty.md高难度列表,等待后续集中攻克
- 编写题解 — AC 后立即编写
.explain.md(格式见下方题解规范) - 目录整理 — 将题目文件按前缀和编号范围移入对应子目录:
- 以 PID 前缀(
P/B)为一级目录 - 以每 50 题为一个区间(如
P1000-1049、B2050-2099)为二级目录 - 区间起止计算公式:
start = floor(num / 50) * 50,end = start + 49 - 示例:
B2096→B/2050-2099/,P1415→P/1400-1449/ - 若目标子目录不存在则创建
- 以 PID 前缀(
- 逐题提交 — 每道题单独一个 commit,一套题目(
.cpp+.problem.md+.explain.md及关联的测试数据_<id>.in/.ans)为一个不可拆分的原子提交单位。git add三个文件后一次性git commit -m "feat(AC <PID> @ 洛谷): implemented code of <PID> from 洛谷",严禁将题解与代码拆开分次提交 - 汇报结果 — 每道题完成后汇报 AC 结果;对于移入高难度列表的题目,说明失败原因(WA/TLE/RE/CE)及得分
批量验收流程
- 判断评测需求 — 检查用户是否明确表示这批题目已 AC:
- 用户已声明 AC:跳过在线评测步骤 2,直接进入步骤 3 编写题解
- 未声明 AC / 不确定:执行全部流程
- 批量在线评测 — 使用
luogu batch <dir> --export markdown批量提交评测,获取所有题目的评测结果 - 结果分流 — 根据评测结果分类处理:
- AC 100 分:自动进入步骤 4 编写题解并提交
- 非 AC(入门/普及−):代码需修正,最多重试 3 次,仍不通过则移入高难度列表
- 非 AC(提高+/省选/NOI-):直接移入
documents/high-difficulty.md
- 编写题解 — AC 题目检查
.explain.md是否存在:- 已有题解 + 三文件齐全:直接提交
- 缺题解:读取
.cpp和.problem.md,编写题解后提交 - 缺
.problem.md:先爬取题目再编写题解
- 并行加速 — 缺题解数量较大时(>10 道),用后台 Agent 分组并行编写,每 Agent 10~16 道为宜
- 逐题提交 — AC 题目按编号顺序逐题
git commit,提交信息格式一致 - 测试数据 — 检查是否存在
_<id>.in/.ans文件,一并提交 - 汇总报告 — 全部完成后输出:AC 题目数、高难度列表新增数、各题评测结果 Markdown 表
题解规范
.explain.md 统一格式:
# PXXXX [来源] 题解名称 题解
## 题目链接
- [洛谷 PXXXX](https://www.luogu.com.cn/problem/PXXXX)
## 题目大意
...
## 解题思路
...
## 代码实现
...
## 复杂度分析
- 时间复杂度:...
- 空间复杂度:...
代码改写流程
当用户要求按代码风格改写已有 .cpp 时:
- 读取原代码和
AGENTS.md规范 - 逐条应用:展开宏、去注释、换
scanf/printf、小驼峰命名、doSomething函数风格、单语句去大括号 - 格式化:
clang-format -i <.cpp>(配置位于仓库根目录.clang-format) - 编译验证:
g++ -std=c++17 -O2 -fsyntax-only - 不改动编译产物(
.out/.exe)和测试数据
高难度题目列表
documents/high-difficulty.md 格式:
| PID | 题目名称 | 难度 | 失败原因 | 得分 | 记录日期 |
| ----- | -------- | ----- | -------- | ---- | ---------- |
| P1436 | ... | 提高+ | WA | 40 | 2026-06-19 |
| P1410 | ... | 省选 | RE | 100? | 2026-06-18 |
后续集中攻克时,逐题重新分析并提交评测。
洛谷 CLI 参考
# 环境准备(必须先启动 daemon 并在浏览器加载扩展)
# daemon 启动后确保扩展已连接(curl http://127.0.0.1:9527/api/health → wsConnected: true)
# 安装别名
./utils/luogu.sh --install
# 单题提交并等待 AC
luogu submit source/website/www.luogu.com.cn/P1001.cpp
# 批量评测(含 Markdown 汇总表)
luogu batch source/website/www.luogu.com.cn/ --export markdown
# 按范围筛选批量评测
luogu batch source/website/www.luogu.com.cn/ --include 'P10[0-9]{2}'