{"id":"a36f0e09-7725-4baa-b7a9-bb7135e47c43","entityType":"agent","slug":"clawhub-fslong520-ojimport","name":"ojimport","canonicalUrl":"https://www.xpersona.co/agent/clawhub-fslong520-ojimport","canonicalPath":"/agent/clawhub-fslong520-ojimport","generatedAt":"2026-10-09T16:48:18.489Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":null},"description":"从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Skill: ojimport Owner: fslong520 Summary: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Tags: algorithm:3.0.0, atcoder:3.0.0, codeforces:3.0.0, contest:3.0.0, gesp:3.0.0, import:3.0.0, latest:3.0.0, oj:3.0.0, problem:3.0.0 Version history: v3.0.0 | 2026-09-02T04:07:44.905Z | user 定级表加四级体系锚定(GESP/CSP-J/CSP-S/NOI)，超纲知识点循跨体系兜底规则升到CSP/NOI禁定格GESP级；CF定分改四维判据档位判定表，水题克制 v2.7.0 | 20","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3.2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s179dxbepyx3dhgg6vsaj80yt583nxj7:ojimport","sourceUrl":"https://clawhub.ai/fslong520/ojimport","homepage":"https://clawhub.ai/fslong520/skills/ojimport","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/fslong520/ojimport","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/fslong520/skills/ojimport","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":70,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Skill: ojimport Owner: fslong520 Summary: 从 OJ 平台搬运题目（含AtCoder/Codefor"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":null},"stars":null,"forks":null,"downloads":3174,"packageName":null,"latestVersion":"3.0.0","tractionLabel":"3.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T09:20:36.230Z","lastCrawledAt":"2026-10-09T09:20:36.230Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T09:20:36.230Z","lastVerifiedAt":null,"highlights":[{"version":"3.0.0","createdAt":"2026-09-02T04:07:44.905Z","changelog":"定级表加四级体系锚定(GESP/CSP-J/CSP-S/NOI)，超纲知识点循跨体系兜底规则升到CSP/NOI禁定格GESP级；CF定分改四维判据档位判定表，水题克制","fileCount":26,"zipByteSize":49294},{"version":"2.7.0","createdAt":"2026-08-14T07:03:35.153Z","changelog":"新增 source 出处字段：URL 搬运时记录原题链接（problem.yaml 的 source + 题面标题下出处行），文件/文本/原创题置 null；审计 8.2/8.3 加出处一致性校验","fileCount":26,"zipByteSize":44936},{"version":"2.6.0","createdAt":"2026-08-09T01:14:32.932Z","changelog":"评分体系重构：定分改按难度星级为主轴（⭐800~⭐⭐⭐⭐⭐2100），GESP等级仅作知识点分类不再参与定分；新增算法门槛修正（二分/DP/DFS/图论等，仅⭐/⭐⭐档叠加）；同步更新题面模板与审计复核清单","fileCount":26,"zipByteSize":44448},{"version":"2.5.5","createdAt":"2026-08-08T15:37:01.247Z","changelog":"题面难度标注弃星级改用CF分数（与problem.yaml score一致）；同步question模板/04-problem/08-audit/比赛汇总格式；星级仅作内部定分参考","fileCount":26,"zipByteSize":43947},{"version":"2.5.4","createdAt":"2026-07-13T10:56:14.071Z","changelog":"Fix image handling: local images now go to additional_file/ with file:// prefix (HydroOJ format), internet URLs kept as-is","fileCount":26,"zipByteSize":43210},{"version":"2.5.3","createdAt":"2026-07-11T14:57:04.754Z","changelog":"合并 07/11 步骤文件；模板加测试点分布表占位；SKILL.md 去重复引用","fileCount":26,"zipByteSize":43036},{"version":"2.5.2","createdAt":"2026-07-08T05:22:52.306Z","changelog":"测试点分布表改为适中粒度：写输入规模与构造类型，禁答案","fileCount":27,"zipByteSize":43606},{"version":"2.5.1","createdAt":"2026-07-08T04:09:34.506Z","changelog":"简化测试点分布表","fileCount":27,"zipByteSize":43506}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s179dxbepyx3dhgg6vsaj80yt583nxj7:ojimport","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T16:48:18.485Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fslong520-ojimport/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":null},"readme":"Skill: ojimport\n\nOwner: fslong520\n\nSummary: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\n\nTags: algorithm:3.0.0, atcoder:3.0.0, codeforces:3.0.0, contest:3.0.0, gesp:3.0.0, import:3.0.0, latest:3.0.0, oj:3.0.0, problem:3.0.0\n\nVersion history:\n\nv3.0.0 | 2026-09-02T04:07:44.905Z | user\n\n定级表加四级体系锚定(GESP/CSP-J/CSP-S/NOI)，超纲知识点循跨体系兜底规则升到CSP/NOI禁定格GESP级；CF定分改四维判据档位判定表，水题克制\n\nv2.7.0 | 2026-08-14T07:03:35.153Z | user\n\n新增 source 出处字段：URL 搬运时记录原题链接（problem.yaml 的 source + 题面标题下出处行），文件/文本/原创题置 null；审计 8.2/8.3 加出处一致性校验\n\nv2.6.0 | 2026-08-09T01:14:32.932Z | user\n\n评分体系重构：定分改按难度星级为主轴（⭐800~⭐⭐⭐⭐⭐2100），GESP等级仅作知识点分类不再参与定分；新增算法门槛修正（二分/DP/DFS/图论等，仅⭐/⭐⭐档叠加）；同步更新题面模板与审计复核清单\n\nv2.5.5 | 2026-08-08T15:37:01.247Z | user\n\n题面难度标注弃星级改用CF分数（与problem.yaml score一致）；同步question模板/04-problem/08-audit/比赛汇总格式；星级仅作内部定分参考\n\nv2.5.4 | 2026-07-13T10:56:14.071Z | user\n\nFix image handling: local images now go to additional_file/ with file:// prefix (HydroOJ format), internet URLs kept as-is\n\nv2.5.3 | 2026-07-11T14:57:04.754Z | user\n\n合并 07/11 步骤文件；模板加测试点分布表占位；SKILL.md 去重复引用\n\nv2.5.2 | 2026-07-08T05:22:52.306Z | user\n\n测试点分布表改为适中粒度：写输入规模与构造类型，禁答案\n\nv2.5.1 | 2026-07-08T04:09:34.506Z | user\n\n简化测试点分布表\n\nv2.5.0 | 2026-07-05T19:01:48.015Z | user\n\n新增: 审计步骤(08-audit.md)审计文件完整性/模板一致性/GESP等级/分值/AtCoder->CF换算; 03-gesp.md增AtCoder->CF难度换算表+插值公式+比赛位置估分; 工作流审计后打包; SKILL.md版本更新至2.5.0\n\nv2.4.1 | 2026-07-04T05:08:52.672Z | user\n\ndetect_desktop 兜底路径不存在时自动 mkdir -p 创建\n\nv2.4.0 | 2026-07-04T04:59:18.155Z | user\n\n新增跨平台桌面路径自动检测（detect_desktop），支持 Linux/中文/西班牙语/macOS/Windows\n\nv2.3.1 | 2026-07-04T04:56:01.539Z | user\n\n修复桌面路径：中文系统用 ~/桌面 而非 ~/Desktop\n\nv2.3.0 | 2026-07-04T04:43:59.080Z | user\n\n所有工作目录改至 ~/Desktop/，方便用户查找；比赛搬运新增合集打包 step；修复 problem.yaml 和 testdata/config.yaml 格式问题\n\nv2.2.1 | 2026-06-29T08:04:42.126Z | user\n\n修复 testdata.zip 打包格式：文件放 zip 根目录而非 testdata/ 子目录，去掉 std.cpp 等源码\n\nv2.2.0 | 2026-06-17T12:59:55.918Z | user\n\n新增第六步定分（CF Rating 估算），AI 据 GESP 等级+难度+数据规模动态估分；移除 score:1200 硬编码默认值；各模板/配置文档同步更新\n\nv2.1.0 | 2026-06-17T12:54:23.781Z | user\n\nGESP定级文档全面重构（算法分类详表/组合判定/自查清单）；引入分数体系score字段（800~3500，与CF Rating对齐）；mkin.h新增Subtask分组结构体；大样例处理说明补充\n\nv2.0.0 | 2026-06-03T08:36:47.394Z | user\n\n新增 references/testdata-design.md 题型感知边界清单（数组/图论/树/字符串/DP/数学分类）；07-testdata.md 与 11-testdata-only.md 去重，统一引用共享文档；版本号自 1.9.0 升至 2.0.0\n\nv1.9.0 | 2026-06-02T04:35:11.075Z | user\n\n修复: problem.yaml 标签规则强化——必须含 1~3 个知识点标签 + GESP 等级标签，禁单标签敷衍。更新 05-config.md、contest/03-move.md 模板及 AVOID 规则。\n\nv1.8.2 | 2026-06-01T06:10:48.794Z | user\n\n定级规则修复——新增规则四'解法优先于洞察'；增写std后验样例再生成数据流程；工作目录命名规范化；难度标记改为五星制\n\nv1.8.1 | 2026-05-27T11:48:17.863Z | user\n\n定级规则修复：新增规则四'解法优先于洞察'，防止将数学洞察误定为算法级别\n\nv1.8.0 | 2026-05-21T09:49:04.937Z | user\n\n标程写后必验样例再生成数据；工作目录名规范化；算法优先定级规则强化；难度标记改为五星制；GESP知识点等级表依CCF官方大纲修正；全技能文档鲁迅式改造\n\nv1.7.6 | 2026-05-13T13:24:12.556Z | user\n\n增写 std 后验样例再生成数据之流程；全技能文档鲁迅式改造\n\nv1.7.5 | 2026-05-12T03:06:07.386Z | user\n\n工作目录命名规范化：改为 work_{PID}_{标题简写} 格式，替代原本的裸 work 目录；所有步骤文件改用 {WORK_DIR} 变量引用\n\nv1.7.4 | 2026-04-29T11:19:24.762Z | user\n\n强化题面规则：严禁修改样例，保留图片链接(![](url)、<img>标签)和示意图\n\nv1.7.3 | 2026-04-29T05:08:38.631Z | user\n\n移除AI蜜罐机制，通过安全扫描\n\nv1.7.2 | 2026-04-29T05:06:39.019Z | user\n\n恢复中文技能目录，ojimport重命名为搬题姬\n\nv1.7.1 | 2026-04-23T05:13:11.586Z | user\n\n修复 urlgo snapshot WebSocket 连接问题，优化比赛搬运流程\n\nv1.0.1 | 2026-04-23T05:12:28.683Z | user\n\n修正技能名称为搬题姬\n\nv1.0.0 | 2026-04-23T05:10:46.743Z | user\n\n首次发布：支持 AtCoder/Codeforces 单题和比赛搬运，自动生成题面、标程、测试数据\n\nv1.7.0 | 2026-04-21T16:33:53.907Z | user\n\nsteps 文件改为鲁迅式半文半白，Token 精简 42%\n\nv1.6.1 | 2026-04-21T15:35:21.511Z | user\n\n排除 work 工作目录和 zip 打包产物\n\nv1.6.0 | 2026-04-21T15:29:29.074Z | user\n\n重构步骤文档结构\n\nv1.5.1 | 2026-04-16T14:46:12.266Z | user\n\n配置文件 title 字段改为中英文对照格式，与题面格式统一\n\nv1.5.0 | 2026-04-16T13:45:47.918Z | user\n\n精简文档结构：删除7个辅助文件，内容融入steps目录，只保留SKILL.md入口\n\nv1.4.3 | 2026-04-16T13:42:33.415Z | user\n\n更新操作场景示例、使用指南、CHANGELOG文档，反映新的按需读取架构\n\nv1.4.2 | 2026-04-16T13:39:48.785Z | user\n\n文件/文本支持多题判断：检测分割线和题号标记，自动进入比赛搬运模式\n\nv1.4.1 | 2026-04-16T13:38:22.319Z | user\n\n支持三种输入类型：URL地址、文件路径、直接文本\n\nv1.4.0 | 2026-04-16T13:35:59.202Z | user\n\n按步骤入口、按需读取：SKILL.md简化为入口，详细流程移到steps目录，避免上下文膨胀\n\nv1.3.3 | 2026-04-16T13:15:59.205Z | user\n\n题面汇总文件添加水印包裹；每题独立搬运前先读取题面信息防止上下文爆炸\n\nArchive index:\n\nArchive v3.0.0: 26 files, 49294 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1807b), question/problem.yaml (276b), question/std.cpp (619b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2416b), SKILL.md (6356b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1557b), steps/03-gesp.md (20964b), steps/04-problem.md (3247b), steps/05-config.md (3258b), steps/06-std.md (2857b), steps/07-testdata.md (8331b), steps/08-audit.md (6363b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5354b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (2002b), steps/contest/03-move.md (4561b), _meta.json (127b)\n\nFile v3.0.0:SKILL.md\n\n---\nname: ojimport\nversion: 3.0.0\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级（第二步）+ 定分数（第四步）\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- ⚠️ **AVOID 按速查表/公式机械估 CF 分（含星级映射、AtCoder 换算表、GESP 等级映射）：每次必走 03-gesp.md 第四步「CF 档位判定」，逐项判四维（思维拐点/算法门槛/数据规模/实现细节）锁定档位，水题克制（零思维量 ≤900），拿不准取低档（宁低勿高）**\n- ⚠️ **AVOID 等级乱判：凡涉及线段树/树状数组/平衡树/最短路/MST/并查集/堆/AC自动机/网络流/计算几何等进阶结构，必查 03-gesp.md 2.4 跨体系锚定表，禁低估（线段树 ≠ 5级）；GESP 大纲无此知识点必循 2.5 兜底规则升到 CSP-J/CSP-S/NOI，禁定格在 GESP 级**\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写等级：必含 1~3 个知识点标签 + 1 个等级标签（`GESP X级`/`CSP-J`/`CSP-S`/`NOI`），禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 忘填出处 source：URL 搬运必填原题 URL（problem.yaml 的 source 字段 + 题面出处行）**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOID 写完 std 不验样例：所有样例输入逐一喂入，输出须与题面完全一致，全过方可进入数据生成**\n- ⚠️ **AVOID 修改样例：样例输入/输出必原样复制，禁增删改任何字符**\n- ⚠️ **AVOID 删除图片链接：题面中 `![](url)`、`<img>` 标签等所有图片语法必原样保留**\n- ⚠️ **AVOID 删除示意图：题面原有示意图、表格、公式必完整保留**\n- ⚠️ **生成测试点时 AVOID 生成 problem_zh.md、problem.yaml**\n- ⚠️ **生成测试点时 AVOID 全局打包（09-package.md 之整个工作目录 zip），只打包 testdata/ 下文件**\n- ⚠️ **生成测试点时 AVOID 跳过 std.cpp：无标程则 .out 不出**\n- ⚠️ **生成测试点时 AVOID 只写样例数据：25 组全覆盖（含 Hack）**\n- ⚠️ **生成测试点时 AVOID 交付前不验证：必查 .in 格式、.out 与样例一致、文件成对存在**\n- ⚠️ **AVOID 在 std.cpp 中使用 C 语言的输入输出（scanf/printf）——必须用 cin/cout**\n- ⚠️ **AVOID 在 std.cpp 中使用 C 风格写法（qsort、char[]、strcpy 等）——除数组外，尽量用 C++ 标准库（std::sort、std::string、std::vector 等）**\n\n---\n\n## 入口\n\n读 steps/00-detect-url.md\n\nFile v3.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"3.0.0\",\n  \"publishedAt\": 1788322064905\n}\n\nFile v3.0.0:references/testdata-design.md\n\n# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| C1 | 无解情况 | 输出 -1, Impossible |\n| C2 | 唯一解 | 仅一种构造方案 |\n| C3 | 多解任意 | 任输一合法解即可 |\n\n---\n\n## 三、Hack 数据设计\n\n| 常见错误 | Hack 数据特征 | 代码示例 |\n|---------|--------------|---------|\n| **int 溢出** | 用近 2³¹-1 或 2⁶³-1 大数 | `fout << \"2147483647 2147483647\"` |\n| **边界漏判** | N=1, N=max, a[i]=0 | `fout << \"1\\n0\"` |\n| **精度误差** | 需 double 非 float，或浮点比较 | `fout << \"0.1 0.2\"`（=0.3?） |\n| **超时** | 迫 O(n²) 算法超限 | N=200000 逆序 |\n| **错误贪心** | 使贪心策略得非优解 | 经典反例数据 |\n| **负数取模** | C++ `-5 % 3` = -2（非 1） | 含负数的模运算 |\n| **未开 long long** | 两 int 相乘超 2³¹-1 | `fout << \"50000 50000\"` |\n| **数组越界** | n 上限 + 特殊访问 | n=100000 边界访问 |\n| **字符串结束符** | 含空格、换行 | `fout << \"abc def\"` |\n| **多测不清空** | 多组测试用例（T≥2） | T=2 且共用数据结构 |\n\n---\n\n## 四、各规模数据生成建议\n\n### 小规模（case 3-8）\n\n| 用例 | N 范围 | 目的 |\n|:----:|:------:|------|\n| 3-4 | [1, 5] | 最小合法输入 |\n| 5 | [5, 10] | 稍复杂 |\n| 6 | 特定构造 | 特殊性质 1（如单调递增） |\n| 7 | 特定构造 | 特殊性质 2（如全相同） |\n| 8 | 特定构造 | 特殊性质 3（据题定制） |\n\n### Hack 数据（case 9-11）\n\n每例针对一类常见错误。宁小勿大——越简单越方便定位错因。\n\n### 中规模（case 12-15）\n\nN 在 [100, 10000] 范围随机，可混入部分边界特征。\n\n### 大规模（case 16-20）\n\n| 用例 | N | 目的 |\n|:----:|:-:|------|\n| 16-17 | 上限 80% | 接近极限 |\n| 18 | 上限 100% | 极限压力 |\n| 19 | 上限 + 特殊构造 | 极限 + Hack |\n| 20 | 上限 + 全相同/全逆序 | 极限 + 退化 |\n\n### 随机回归（case 21-25）\n\nN 在 [1, 上限] 之间随意随机，类型混合，覆盖意外路径。\n\n---\n\n## 五、config.yaml 格式\n\n```yaml\ntype: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out\n```\n\n**注：**\n- 若 OJ 支持自动识别（文件名 1.in~25.in），可省 `subtasks` 只写顶层 `time`/`memory`\n- 用 `subtasks` 时必显式列出所有 `cases`\n- 顶层 `time`/`memory` 为全局默认，可被子任务覆盖\n- `subtasks[].id` 从 0 开始编\n\n---\n\n## 六、测试点分布表格式\n\n生数据后，**必**于 `problem_zh.md` 末（`</div>` 前）追加以下表格。此为硬性要求，两流程（常搬题/仅生测试点）皆同。\n\n### 示例\n\n```markdown\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |\n```\n\n### 各列规则\n\n| 列 | 规则 |\n|----|------|\n| Subtask | 对应 config.yaml 中 subtask.id |\n| 分值 | 该 subtask 的 score |\n| 测试点编号 | 该 subtask 覆盖的 case 编号范围（如 `1~2`、`3~8`） |\n| 说明 | 描述每组之规模与数据特征 |\n\n### 说明列撰写规范\n\n| 写法 | 说明 |\n|------|------|\n| `样例` | 样例数据 |\n| `小规模 N≤10` | 小规模随机，N 最大 10 |\n| `特殊: 全同值` | 所有值相等 |\n| `特殊: 严格递增` | 严格递增序列 |\n| `Hack: N=1边界` | Hack 边界漏判 |\n| `Hack: 大数值溢出` | Hack int 溢出 |\n| `中规模 N≈100~10000` | 中等规模 |\n| `大规模 N≈2e5~1e6 压力` | 大规模压力 |\n| `随机 N=1~1e6 回归` | 回归测试 |\n\n### 约束\n\n- ✅ 可写规模范围（N≤10、N≈1e5 等）\n- ✅ 可写构造类型（全同值、单调、链、菊花图等）\n- ❌ 禁写答案（ans=xx、输出 Yes/No 等）\n- ❌ 禁写具体计算值（d=99991、S=1e9 等）\n- ❌ 禁逐 case 列表（只按 subtask 分组）\n\nFile v3.0.0:question/problem_zh.md\n\n<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度（CF Rating）：**1000**。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> 生测试数据后，按实际 subtask 分组改写上表。\n\n</div>\n\nFile v3.0.0:skill-card.md\n\n## Description:\n\nImports programming contest problems from OJ platforms such as AtCoder and Codeforces into standardized problem packages, or generates test data from user-provided problem statements.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fslong520](https://clawhub.ai/user/fslong520)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and competitive programming problem maintainers use this skill to convert imported or supplied OJ problem statements into standardized problem packages. It can produce problem Markdown, YAML configuration, C++ reference solutions, generated test data, audit guidance, and packaged ZIP deliverables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow can delete, rename, zip, compile, or run files in Desktop work directories.\n\nMitigation: Use a controlled workspace and require path validation plus confirmation before any rm, mv, zip, compile, or run step.\n\nRisk: Imported problem text, titles, IDs, and URLs are untrusted inputs that can influence generated files and commands.\n\nMitigation: Validate and sanitize problem identifiers, titles, source URLs, filenames, and resolved paths before writing files or executing commands.\n\nRisk: Generated C++ reference solutions and test-data generators are executable code.\n\nMitigation: Review generated source files before compiling or running them, preferably in a sandbox or disposable problem workspace.\n\n## Reference(s):\n\n- [Test Data Design Reference](artifact/references/testdata-design.md)\n- [ClawHub Skill Page](https://clawhub.ai/fslong520/skills/ojimport)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Markdown instructions with C++ source files, YAML configuration, generated test data files, and ZIP packages]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces file-oriented deliverables and may compile, run, clean, and package generated artifacts during the workflow.]\n\n## Skill Version(s):\n\n3.0.0 (source: SKILL.md frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v3.0.0:steps/00-detect-url.md\n\n# Step 0: 辨输入类\n\n## 目标\n\n辨输入为 URL、文件路径或直文本，单题或赛题。\n\n## ⚠️ 比赛搬运铁律\n\n若测得为比赛 URL（如 `/contests/abc454`）：\n\n1. **必先读 steps/contest/01-list.md** 创题面汇总文件\n2. **必逐题译之追加写入汇总文件**\n3. **禁跳过汇总文件直逐题搬运**\n4. **禁自对话上下文记忆题面**\n\n## 输入类型\n\n| 类型 | 判断条件 |\n|------|---------|\n| URL | 以 `http://` 或 `https://` 起 |\n| 文件路径 | 以 `/` 或 `./` 或 `~/` 起 |\n| 直文本 | 非URL亦非文件路径 |\n\n## URL 跳转\n\n| URL 特征 | 下一步 |\n|---------|--------|\n| 尾为 `/tasks` 或 `/problems` | `contest/01-list.md` |\n| 其他 | `02-get-info.md` |\n\n## 文件/文本跳转\n\n| 内容特征 | 下一步 |\n|---------|--------|\n| 多道题（多个 `---` 或多题号） | `contest/03-move.md` |\n| 单道题 | `01-init.md` → `02-get-info.md` |\n\n## 多题判法\n\n```python\ndef is_multi_problem(content):\n    if content.count(\"---\") >= 2:\n        return True\n    markers = [\"## A -\", \"## B -\", \"## C -\", \"## D -\", \"## E -\"]\n    if sum(1 for m in markers if m in content) >= 2:\n        return True\n    return False\n```\n\nFile v3.0.0:steps/01-init.md\n\n# Step 1: 环境初始化\n\n## 目标\n\n自模板目录复文件至带题目标识之工作目录。\n\n## 基路径\n\n### 桌面路径检测（跨平台）\n\n先检测用户桌面路径，后续所有工作目录创建于桌面。\n\n```bash\n# 自动检测桌面路径（支持 Linux / macOS / Windows）\n# 检测到路径后确保目录存在，不存在则创建\ndetect_desktop() {\n    local d=\"\"\n    # Linux: ~/.config/user-dirs.dirs 中有 XDG_DESKTOP_DIR\n    if [ -f \"$HOME/.config/user-dirs.dirs\" ]; then\n        . \"$HOME/.config/user-dirs.dirs\"\n        if [ -n \"$XDG_DESKTOP_DIR\" ] && [ -d \"$XDG_DESKTOP_DIR\" ]; then\n            echo \"$XDG_DESKTOP_DIR\"\n            return\n        fi\n    fi\n    # macOS: ~/Desktop\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 中文: ~/桌面\n    d=\"$HOME/桌面\";   [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 西班牙语: ~/Escritorio\n    d=\"$HOME/Escritorio\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Windows Git Bash / WSL: ~/Desktop (再试一次)\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # 兜底：使用 ~/Desktop，不存在则创建\n    mkdir -p \"$HOME/Desktop\"\n    echo \"$HOME/Desktop\"\n}\n```\n\n## 工作目录命名\n\n**格式：** `{BASE_DIR}/work_{PID}_{标题简写}`\n\n| 阶段 | 目录名 | 说明 |\n|------|--------|------|\n| 初始化时 | `{BASE_DIR}/work` 或 `{BASE_DIR}/work_{PID}` | PID已知则径用，未知暂用 `work` |\n| 得PID后（step 2） | `{BASE_DIR}/work_{PID}` | 自URL取PID后更名 |\n| 定标题后（step 4） | `{BASE_DIR}/work_{PID}_{标题简写}` | 生题面后加标题简写 |\n\n**标题简写规则：**\n- 英文标题：取完整标题，空格易下划线，转小写（如 `Trimo` → `trimo`）\n- 中文标题：取前 4~8 字（如 `移除前导o` → `移除前导o`）\n- 标题过长则截取前 20 字符\n\n> **工作目录变量**：后诸步骤中，以 `{WORK_DIR}` 指 `{BASE_DIR}/work_{PID}_{标题简写}`。\n> AI 当于上下文中记 `{WORK_DIR}` 之值，所有文件操作皆基于此目录。\n\n## 命令\n\n### 其一：PID 已知（自 URL 或上下文可定）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work_{PID} 2>/dev/null\ncp -r question $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 其二：PID 未知（首初始化）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work 2>/dev/null\ncp -r question $BASE_DIR/work\n# {WORK_DIR} = $BASE_DIR/work（后得信息后更名）\n```\n\n## 模板位置\n\n1. `$BASE_DIR/question/` — 若用户预置模板于桌面\n2. `SKILL.md 所在目录/question/` — 技能自带模板\n3. `当前工作目录/question/` — 兜底\n\n## 模板文件\n\n| 文件 | 用途 |\n|------|------|\n| `std.cpp` | 标程模板 |\n| `mkdata.cpp` | 数据生成器模板 |\n| `mkin.h` | 测试数据逻辑模板 |\n| `problem.yaml` | 配置文件模板 |\n\n## 后续路径\n\n后诸步骤引文件时用 `{WORK_DIR}/xxx` 而非 `work/xxx`。\nAI 当记 `{WORK_DIR}` 之值，下步一致。\n\n## 下一步\n\n成 → `02-get-info.md`\n\n败 → 查模板目录存否\n\nFile v3.0.0:steps/02-get-info.md\n\n# Step 2: 获取题目信息\n\n## 目标\n\n根据输入来源获取题目信息（PID、标题、题面内容）。\n\n## 浏览器工具优先级\n\n```\n1. urlgo（优先）\n2. BrowserUse（urlgo 不可用）\n3. WebFetch（以上都不可用，仅公开页面）\n```\n\n## 来源类型\n\n| 类型 | 处理 |\n|------|------|\n| URL | urlgo 访问 → snapshot → 解析 |\n| 题号 | 直接匹配 PID 格式 |\n| 文件 | 解析文件提取题目信息 |\n| 文本 | 解析用户给出的文本 |\n\n## PID 提取\n\n| 平台 | URL 格式 | PID 规则 |\n|------|---------|---------|\n| AtCoder | `/contests/abc451/tasks/abc451_a` | `abc451a` |\n| Codeforces | `/contest/71/problem/A` | `cf71a` |\n| LeetCode | `/problems/two-sum` | `lc1` |\n| Luogu | `/problem/P1001` | `p1001` |\n\n无法提取时 PID 填 `null`。\n\n## 来源 URL 记录\n\n确定题目来源 URL 后记之，写 problem.yaml 时把该 URL 填入 `source` 字段（详见 05-config.md）。\n\n## 重命名工作目录（关键！）\n\n提取到 PID 后，**立即重命名工作目录**，使其包含题目标识：\n\n### 如果当前目录是 `work`（即初始化时PID未知）：\n\n```bash\nBASE_DIR=$(detect_desktop)\nmv $BASE_DIR/work $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 如果当前目录已经是 `work_{PID}`（即初始化时已用PID）：\n\n无需操作，`{WORK_DIR}` 保持不变。\n\n### 如果 PID 为 null（无法提取）：\n\n保持 `{WORK_DIR}` 不变，后续步骤确定名称后再处理。\n\n## 下一步\n\n成功 → `03-gesp.md`\n\n失败 → 询问用户其他来源\n\nFile v3.0.0:steps/03-gesp.md\n\n# Step 3: GESP 知识点等级判定 + CF 难度定分\n\n## 目标\n\n两步独立评估：\n- **知识点等级（GESP 1-8级 / CSP-J / CSP-S / NOI）**——用于 `tag` 的等级标签分类，**与定分无关**。\n- **CF 难度评分（800~3500）**——写入 `problem.yaml` 的 `score`，与知识点等级**彻底解耦**。\n\n## 原则\n\n**知识点等级 ≠ 题目难度。** 同知识点可出简题亦可出难题。**先定级（分类），后定难（定分），二者互不映射。**\n\n> ⚠️ 两条铁律：\n> 1. **知识点等级只进 tag，不参与 CF 定分。** 定分一律走第四步「CF 评分档位判定」，不查等级、不查星级。\n> 2. **CF 定分只认难度，不认知识点层级。** 同一\"二维数组\"知识，可出 800 的纯旋转输出，也可出 1400+ 的复杂应用。定分只按思维复杂度判据，绝不因\"用到某数据结构/算法\"自动加档。\n\n---\n\n## 第一步：前置分析（必做）\n\n定级/定分前，先提取题面特征：\n\n### 1.1 输入输出特征\n\n| 特征 | 信息 | 提示 |\n|------|------|------|\n| 输入规模 | N 的最大值 | 判断算法复杂度要求 |\n| 输出类型 | 单值/序列/构造 | 影响解法选择 |\n| 多组数据 | T 的存在 | 可能涉及预处理 |\n\n### 1.2 数据范围速判\n\n| N 的范围 | 允许复杂度 | 常用算法 |\n|----------|-----------|---------|\n| N ≤ 20 | O(2^N) | 暴力枚举、位运算 |\n| N ≤ 1000 | O(N^2) | 暴力DP、简单图论 |\n| N ≤ 10^5 | O(N log N) | 二分、排序、线段树 |\n| N ≤ 10^6 | O(N) | 贪心、前缀和、并查集 |\n| N ≤ 10^9 | O(log N) 或 O(1) | 数学公式、矩阵快速幂 |\n\n### 1.3 空间限制\n\n| 限制 | 提示 |\n|------|------|\n| 256MB | 可开二维数组 |\n| 64MB | 注意空间优化 |\n| 16MB | 需滚动数组/压缩 |\n\n---\n\n## 第二步：定级（知识点分类，跨体系锚定）\n\n**体系说明**：竞赛知识点跨越 GESP（1-8级，CCF等级认证）、CSP-J（入门）、CSP-S（提高）、NOI（国赛/省选段）四套体系。**先查 GESP 大纲；若知识点不在 GESP 表（超纲），则循 CSP-J → CSP-S → NOI 逐级找，取对应体系标注。** 等级标签写法见 2.6。\n\n### 2.1 GESP 核心知识总览（CCF 2026 大纲）\n\n| 级别 | 核心知识 | 定级提示 |\n|:----:|---------|---------|\n| 一级 | 变量、基本数据类型、顺序/分支/循环、基本运算、输入输出 | 无数组、无嵌套循环，仅有基础语法 |\n| 二级 | 存储与网络、流程图、ASCII编码、数据类型转换、**多层分支/循环嵌套**、数学函数 | 有嵌套循环，但无数组/字符串操作 |\n| 三级 | 数据编码、进制转换、位运算、算法描述、**一维数组、字符串、枚举法、模拟法** | 用到一维数组或字符串，或枚举/模拟算法 |\n| 四级 | **指针、结构体、二维/多维数组、函数、递推算法、排序算法（冒泡/插入/选择）、文件操作、异常处理** | 用到二维数组/结构体/指针，或递推/排序算法 |\n| 五级 | **初等数论、高精度运算、链表、二分查找/答案、递归、贪心、分治**（归并/快排） | 用到二分/贪心/递归/分治/数论/链表 |\n| 六级 | **树、哈夫曼树、二叉排序树、DFS/BFS、简单动态规划（一维/背包）、面向对象、栈与队列** | 用到树/搜索/简单DP/栈/队列 |\n| 七级 | **复杂动态规划（LIS/LCS/区间DP/二维DP/滚动数组）、图的定义与遍历、图论算法（flood fill）、哈希表** | 用到复杂DP/图遍历/图论基础/哈希表 |\n| 八级 | 计数原理、排列组合、杨辉三角、**倍增法、图论算法综合（MST/最短路）、算法优化** | 用到最短路/MST/倍增/组合数学/算法优化 |\n\n### 2.2 GESP 核心算法递进（大纲附录）\n\n**判定时以题目所涉最高级算法为准。**\n\n| 级别 | 核心算法 |\n|:----:|---------|\n| 一级 | 无特定算法，基础编程 |\n| 二级 | 无特定算法，综合编程 |\n| 三级 | 枚举法、模拟法 |\n| 四级 | 递推算法、冒泡排序、插入排序、选择排序 |\n| 五级 | 二分查找/二分答案、递归、贪心算法、分治（归并排序、快速排序） |\n| 六级 | 深度优先搜索（DFS）、宽度优先搜索（BFS）、简单动态规划 |\n| 七级 | 复杂动态规划（LIS、LCS、区间DP）、图遍历算法 |\n| 八级 | 最小生成树、最短路径、算法优化 |\n\n### 2.3 GESP 核心数据结构递进（大纲附录）\n\n**若题目使用某级数据结构，其定级不可低于该级。**\n\n| 级别 | 核心数据结构 | 说明 |\n|:----:|-------------|------|\n| 一级 | 基本数据类型（int、long long、float、double、char、bool） | 无复合结构 |\n| 二级 | 无新增 | 仅有基本类型 |\n| 三级 | **一维数组、字符串** | 用一维数组/字符串解题→下限三级 |\n| 四级 | **二维/多维数组、结构体、指针** | 用二维数组/结构体/指针→下限四级 |\n| 五级 | 链表（单链表、双链表、循环链表） | 用链表→下限五级 |\n| 六级 | 栈、队列、循环队列、树、二叉树 | 用栈/队列/树→下限六级 |\n| 七级 | 图（有向图、无向图）、哈希表 | 用图/哈希表→下限七级 |\n| 八级 | 无新增（综合应用） | 综合运用已有知识 |\n\n### 2.4 跨体系知识点锚定表（⭐ 核心，四体系对照）\n\n> **症结所在**：GESP 大纲仅列到\"树/图/哈希/最短路\"。但**实际题目常出现线段树、树状数组、堆、并查集、平衡树、AC自动机、网络流、计算几何等进阶结构，GESP 大纲 2.1~2.3 无条目，AI 无据可依，凭感觉乱定（如线段树给 5 级）。** 下表按四体系对照锚定，每知识点标注其所属体系与等级，**凡命中即按最高归属锚定，禁低估。**\n>\n> **跨体系对应**：GESP 一级~二级≈入门基础（NOI难度1-2）、三级~四级≈CSP-J（1-4）、五级~六级≈CSP-J核心（3-5）、七级≈CSP-S（5-6）、八级≈CSP-S（6-7）；**超出 GESP 八级者**（AC自动机/Tarjan/网络流/后缀自动机/计算几何/可持久化/树链剖分/博弈论等）→ **CSP-S 高阶（7）或 NOI（8-10）**。\n\n#### 2.4.1 数据结构类\n\n| 知识点 | GESP | CSP-J | CSP-S | NOI | 说明/锚点 |\n|--------|:----:|:-----:|:-----:|:---:|----------|\n| 一维数组、字符串 | 3 | 1-3 | — | — | 基础线性结构 |\n| 二维/多维数组、结构体、指针 | 4 | 3-4 | — | — | 复合结构 |\n| 链表（单/双/循环） | 5 | 3 | — | — | 线性表 |\n| 栈、队列、循环队列 | 6 | 3 | — | — | 线性结构 |\n| 树、二叉树、哈夫曼树、二叉排序树 | 6 | 3-4 | — | — | 树基础 |\n| 堆（优先队列） | **7** | 3-4 | 5-6 | — | 常配哈夫曼树/图论 |\n| 并查集 | **7** | — | 5-6 | — | 集合连通（NOI大纲提高级） |\n| 哈希表 | 7 | — | 5-6 | — | 哈希函数与冲突处理 |\n| 图（邻接表/遍历） | 7 | 3-4 | 5-6 | — | NOI大纲入门级图概念 |\n| 树状数组（BIT） | **8** | — | 5-6 | — | 单点改/区间查，逆序对 |\n| **线段树**（含懒标记/扫描线） | **8** | — | 6-7 | — | **禁低于CSP-S**；GESP八级（算法优化） |\n| ST 表（倍增/RMQ） | **8** | — | 5-6 | — | 倍增思想 |\n| 平衡树（Treap/Splay/FHQ） | **8** | 选学 | 6-7 | — | 高级数据结构 |\n| 单调栈 / 单调队列 | **8** | 3 | 6 | — | 滑动窗口优化 |\n| 分块 | **8** | — | 6-7 | — | O(√n) 块处理 |\n| Trie 树（字典树） | **8** | — | 6 | — | 01-Trie 异或 |\n| 可持久化结构（主席树等） | — | — | 7 | **8-9** | NOI 难度8-9 |\n| 树链剖分 / 动态树 LCT | — | — | — | **8-10** | NOI 难度8-10 |\n\n#### 2.4.2 算法类\n\n| 知识点 | GESP | CSP-J | CSP-S | NOI | 说明/锚点 |\n|--------|:----:|:-----:|:-----:|:---:|----------|\n| 枚举、模拟 | 3 | 1 | — | — | 基础算法 |\n| 递推、冒泡/插入/选择排序 | 4 | 3 | — | — | 基础排序 |\n| 二分查找/二分答案、递归、贪心、分治 | 5 | 3-4 | — | — | 普及核心 |\n| DFS / BFS | 6 | 5 | — | — | 搜索（NOI入门难度5） |\n| 简单DP（一维/背包） | 6 | 4-5 | — | — | 普及核心 |\n| 复杂DP（LIS/LCS/区间DP/状压/数位/树形） | 7 | 4-5（部分） | 5-8 | — | 提高核心 |\n| 图遍历、flood fill | 7 | 3 | 5-6 | — | 图论基础 |\n| 拓扑排序、二分图判定 | 7 | 4 | 6 | — | 图论 |\n| Dijkstra / Floyd / SPFA（最短路） | **8** | 4（堆优化） | 6 | — | NOI提高级 |\n| 最小生成树（Kruskal/Prim） | **8** | — | 6 | — | NOI提高级 |\n| KMP | **8** | 选学（3-5） | 6 | — | 字符串匹配 |\n| 字符串哈希 | **8** | — | 6 | — | 字符串 |\n| Tarjan（SCC/割点/缩点） | — | — | 6-7 | — | 提高高阶 |\n| AC 自动机 | — | — | 7 | — | 多串匹配 |\n| 网络流 / 费用流 | — | — | 7 | **8** | NOI 难度8 |\n| 后缀自动机 SAM / FFT / NTT | — | — | — | **8-10** | NOI 难度8-10 |\n\n#### 2.4.3 数学类\n\n| 知识点 | GESP | CSP-J | CSP-S | NOI | 说明/锚点 |\n|--------|:----:|:-----:|:-----:|:---:|----------|\n| 初等数论（质数/同余/欧几里得） | 5 | 3 | — | — | 普及 |\n| 高精度运算 | 5 | 2-3 | — | — | 数组模拟 |\n| 快速幂、乘法逆元、扩展欧几里得 | **7** | 4 | 7 | — | 数论进阶 |\n| 欧拉定理、中国剩余定理 CRT | **7** | — | 7 | — | 数论高阶 |\n| 组合数学基础（排列/杨辉/容斥） | 8 | 2-4 | 6-7 | — | 计数 |\n| 矩阵快速幂、矩阵优化DP | 8 | — | 7 | — | 线性代数 |\n| 卡特兰数 | 8 | 4 | 7 | — | 组合计数 |\n| 高斯消元 | — | — | 7 | — | 线性方程组 |\n| 计算几何（凸包/半平面交） | — | — | — | **8-9** | NOI |\n| 博弈论（SG 函数等） | — | — | — | **9** | NOI |\n| 抽象代数（群论/母函数） | — | — | — | **9-10** | NOI |\n\n### 2.5 跨体系定级综合判定\n\n#### 核心规则\n\n1. **算法优先**：以最高级别算法为准定级（查 2.2 / 2.4）\n2. **数据结构设下限**：题目所需数据结构决定最低等级（查 2.3 / 2.4），算法等级若高于此则取算法\n3. **进阶结构保底**：命中 2.4 表者，按表定级，**禁低估**\n4. **数学不计级**：组合数学、数论等理解性知识不计入定级（但**进阶数论算法**如逆元/快速幂除外，见 2.4）\n5. **模板题降级（仅定级）**：若只需套模板，可酌情降一级——**但此降级仅降知识点等级，不影响 CF 定分**（定分独立判定）\n\n#### 跨体系兜底规则（⭐ 新增）\n\n> **GESP 查不到即升级找他**：题面知识点先查 GESP 大纲（2.1~2.3）；**若 GESP 1-8 级均无该知识点（超纲）**，则循下行升级查找（参考 2.4 表）：\n> 1. 先在 **CSP-J**（入门难度1-5）找 → 归属 `CSP-J`\n> 2. 再在 **CSP-S**（提高难度5-8，NOI大纲提高级）找 → 归属 `CSP-S`\n> 3. 最后在 **NOI**（难度8-10）找 → 归属 `NOI`\n> 4. **四级体系皆无** → 取最高可行级（宁可判高，不可低估），并记入 4.3 反例校准表反馈优化\n>\n> **判定顺序**：GESP → CSP-J → CSP-S → NOI，**取首个命中之体系**；若同时命中（如线段树 GESP八级 + CSP-S），取两者中较高归属标注。**禁因查不到而凭空降级。**\n\n#### 等级边界判定\n\n| 情况 | 判定 |\n|------|------|\n| 一级 vs 二级 | 有无嵌套循环 |\n| 二级 vs 三级 | 有无数组/字符串操作 |\n| 三级 vs 四级 | 有无递推/排序/二维数组/结构体 |\n| 四级 vs 五级 | 有无二分/贪心/递归/链表 |\n| 五级 vs 六级 | 有无DFS/BFS/DP/树/栈/队列 |\n| 六级 vs 七级 | 有无复杂DP/图遍历/哈希表/并查集/堆 |\n| 七级 vs 八级 | 有无最短路/MST/倍增/线段树/树状数组/算法优化 |\n| **GESP 八级超纲** | 有无 AC自动机/Tarjan/网络流/可持久化/后缀自动机/计算几何/博弈论 → **CSP-S 高阶 或 NOI** |\n\n#### 定级示例\n\n| 题特征 | 最高算法 | 数据结构 | GESP | 跨体系命中 | 最终级 |\n|-------|:-------:|:-------:|:----:|:-------:|:-------:|\n| 打印九九表，嵌套循环 | 无 | 基本类型 | 一级 | — | **GESP 一级** |\n| 数组最大值 | 无 | 一维数组 | 三级 | — | **GESP 三级** |\n| 二维数组旋转输出 | 无 | 二维数组 | 四级 | — | **GESP 四级** |\n| 二分查找 | 二分（五级） | 一维数组 | 五级 | — | **GESP 五级** |\n| 走迷宫 DFS | DFS（六级） | 二维数组 | 六级 | — | **GESP 六级** |\n| 区间 DP（LIS/LCS） | 复杂DP（七级） | 一维数组 | 七级 | — | **GESP 七级** |\n| Dijkstra 最短路 | 最短路（八级） | 图 | 八级 | CSP-S | **GESP 八级 / CSP-S** |\n| **线段树区间求和** | 线段树（八级） | 树 | 八级 | CSP-S | **GESP 八级 / CSP-S**（**禁 5 级**） |\n| **并查集判连通** | 并查集（七级） | 图 | 七级 | CSP-S | **GESP 七级 / CSP-S** |\n| **堆维护最值** | 堆（七级） | 堆 | 七级 | CSP-S | **GESP 七级 / CSP-S** |\n| **AC 自动机多串匹配** | AC自动机 | — | 超纲 | CSP-S 高阶 | **CSP-S**（GESP 无） |\n| **网络流求最大流** | 网络流 | 图 | 超纲 | CSP-S 高阶 / NOI | **CSP-S / NOI** |\n| **计算几何凸包** | 计算几何 | — | 超纲 | NOI | **NOI** |\n\n---\n\n## 第三步：自查清单（定级）\n\n- [ ] 识别核心知识 → 查 2.1 初步定位（GESP）\n- [ ] 识别最高级算法 → 查 2.2 / 2.4\n- [ ] 识别最高级数据结构 → 查 2.3 / 2.4\n- [ ] **GESP 大纲有无该知识点？无则循 2.5 兜底规则升级查：CSP-J → CSP-S → NOI，取首中体系**\n- [ ] **查 2.4 跨体系锚定表——是否命中线段树/树状数组/堆/并查集/平衡树/最短路/AC自动机/网络流/计算几何？命中即按表锚定，禁低估**\n- [ ] 取 max(算法级别, 数据结构下限, 2.4 级别)\n- [ ] 数学不计级？进阶数论算法例外？（逆元/快速幂 → GESP 七级）\n- [ ] 常见误判核对：\n\n| 误判 | 正确 | 原因 |\n|------|------|------|\n| 二维数组遍历 → 三级 | **四级** | 二维数组下限四级 |\n| 二分查找 → 三级 | **五级** | 算法优先：二分是五级 |\n| DFS走迷宫 → 四级 | **六级** | 算法优先：DFS是六级 |\n| 并查集 → 三级/五级 | **七级 / CSP-S** | 并查集是七级图论 |\n| **线段树 → 五级** | **八级 / CSP-S** | 线段树是八级算法优化（2.4 保底） |\n| **堆 → 四级** | **七级 / CSP-S** | 堆/优先队列是七级 |\n| Dijkstra → 七级 | **八级** | 最短路是八级 |\n| **AC自动机 → 八级（GESP）** | **CSP-S（超纲）** | GESP 无 AC自动机，循兜底升到 CSP-S |\n\n---\n\n## 第四步：定分（CF Rating 档位判定）\n\n**目标**：为题目估算 Codeforces Rating（800~3500），写入 `score`，并作题面难度标注。\n\n> ⚠️ **CF 分按难度，与 GESP/CSP/NOI 等级、星级、知识点完全脱钩。** 定分只认四维判据（思维拐点 / 算法门槛 / 数据规模 / 实现细节），AI 逐项判定后锁定档位，禁直接给一个感觉分。\n\n### 4.0 已知 CF Rating（最高优先级）\n\n若题目直接来自 Codeforces 且已知 Rating：\n- **直接采用已知 Rating**，跳过判据判定\n- 例：CF Round 某题 Rating 1400 → `score: 1400`\n\n### 4.1 判据体系：四维打分（⭐ 核心，禁跳过）\n\n定分前必先对下述四维逐项判定，**每一维必须给出明确结论**（禁含糊、禁跳步），再查 4.2 档位表锁定。\n\n| 维度 | 判定要点 | 量化 | 结论示例 |\n|------|---------|------|---------|\n| **思维拐点** | 题目是否需\"想一步\"才见正解？零步=直做；一步=有拐点；多步=多拐点 | 零步 / 一步 / 多步 | 「二维数组旋转」→ 零步（直做输出） |\n| **算法门槛** | 是否需特定算法（排序/二分/贪心/DP/图论/数据结构）？算法愈深门槛愈高 | 无 / 基础 / 进阶 / 高级 | 「线段树区间和」→ 高级（数据结构） |\n| **数据规模** | N 是否要求效率思维？N≥10^5 需 O(N log N)，N≥10^6 需 O(N) | 小 / 中 / 大 | 「二维数组旋转 N≤1000」→ 小 |\n| **实现细节** | 边界、字符串处理、构造输出、取模、精度是否繁琐？ | 简单 / 中等 / 繁琐 | 「纯旋转输出」→ 简单 |\n\n### 4.2 CF 档位判定表（⭐ 核心，锚点判据）\n\n**判据 → 档位映射，全命中某档才得该档，宁低勿高。**\n\n| CF 档区间 | 思维拐点 | 算法门槛 | 数据规模 | 实现 | CF 锚点（代表题） |\n|:---------:|:-------:|:-------:|:-------:|:----:|------------------|\n| **800** | 零步 | 无 | 小 | 简单 | 4A Watermelon / 71A Way Too Long Words / 50A Domino piling / 231A Team |\n| **900** | 零~半步 | 无 | 小 | 简单 | 96A Football / 118A String Task / 58A Chat Room |\n| **1000** | 一步 | 无~基础 | 小中 | 简单 | 263A Beautiful Matrix / 617A Elephant |\n| **1100** | 一步 | 基础（枚举/模拟） | 中 | 简单 | 160A Twins / 41A Translation |\n| **1200** | 一步 | 基础（二分/简单贪心） | 中 | 中等 | 266A Stones / 208A Dubstep |\n| **1300** | 一步+ | 基础算法组合 | 中 | 中等 | 25A IQ test / 189A Cut Ribbon |\n| **1400** | 多步 | 常规算法（DP/排序/图基础/数论） | 中大 | 中等 | 455A Boredom / 363B (常为 1400) |\n| **1500** | 多步 | 常规算法 + 边界思维 | 中大 | 中等 | 478C / 493C |\n| **1600** | 多步 | 进阶算法（DFS/BFS/简单DP/最短路） | 大 | 中等 | 339C / 580C（BFS） |\n| **1800** | 多步+ | 数据结构（线段树/并查集/单调栈/堆） | 大 | 繁琐 | 474D / 1076E（线段树） |\n| **2000** | 多步+ | 高级算法组合（图论综合/复杂DP） | 极大 | 繁琐 | 555E / 845G |\n| **2200+** | 多拐点 | 高难竞赛（网络流/高级数据结构/数学综合） | 极大 | 极繁 | 985E / 1061D（近 2200） |\n\n> **档位规则**：\n> 1. **逐项判定后，取全部命中档之最高档；任一维度未达更高档则不得升档。**\n> 2. **水题就低不就高**：纯语法/直套模板/零思维 → **800**；禁因\"用了某算法/数据结构\"自动加档。\n> 3. **宁低勿高**：拿不准取低档，勿虚高。\n> 4. **取整至 50 的倍数**（800、850、900、950、1000…）。\n\n### 4.3 反例校准表（⭐ 针对已现乱评）\n\n| 真题特征 | 错误评分 | 正确评分 | 判据分析 |\n|---------|:-------:|:-------:|---------|\n| **简单二维数组旋转**（无思维拐点，纯 O(N²) 遍历赋值） | ~~1400~~ | **800~900** | 思维零步 + 算法门槛无 + 数据小 + 实现简单 → 800 档。**1400 严重虚高**，违背水题就低 |\n| **线段树区间和**（高级数据结构） | GESP ~~5级~~ | **GESP 8级 / CSP-S** | 2.4 表保底，禁低估（注意：定级归级，CF 分另判） |\n| **纯数组求最大最小** | GESP 二级 | **GESP 三级** | 一维数组下限三级 |\n| **AC 自动机 / 网络流 / 计算几何** | **不设/乱降** | **CSP-S 高阶 / NOI** | GESP 无此知识点，循 2.5 兜底规则升级归类，禁定格在 GESP 级别 |\n\n> **判据自问（定分前必答）**：\n> - 此题在 CF 上**最接近哪道题**？其 Rating 是多少？\n> - 我给的分数，**落到 4.2 哪一档**？该档四维判据是否全命中？\n> - 若是简单题，**是否克制在 ≤900**？\n\n### 4.4 定分记录（必填）\n\n每次定分，在审计（08-audit.md）处填写分析记录，格式：\n\n```\n四维判定:\n  思维拐点: {零步/一步/多步}\n  算法门槛: {无/基础/进阶/高级} + {具体算法或数据结构}\n  数据规模: {小/中/大} + {N最大值}\n  实现细节: {简单/中等/繁琐}\n匹配档位: {4.2 表某项，CF区间}\n类比 CF 题: {最接近题 → Rating}\n取定: score = {最终值，50倍数}\n```\n\n---\n\n## 大纲要点（2026版）\n\n1. **数组限制**：三级/四级数组不含变长数组（vector）\n2. **函数限制**：四级函数不含Lambda/运算符重载\n3. **C++标准**：以C++11为准\n4. **复杂度**：需分析时间/空间复杂度\n5. **超纲结构**：线段树/树状数组/堆/并查集/平衡树/AC自动机/网络流/计算几何等 GESP 大纲未列，按 2.4 跨体系锚定表定级，禁低估；超纲者循 2.5 兜底规则升到 CSP-J/CSP-S/NOI\n\n**四级体系参考大纲**：\n- GESP：`/home/fslong/Documents/blog/uploads/statics/lesson/cpp/71-GESP 等级考试/00-大纲/GESP考级大纲.md`\n- NOI（含 CSP-J/CSP-S 难度系数）：`/home/fslong/Documents/blog/uploads/statics/lesson/cpp/00-大纲/00-noi大纲/全国青少年信息学奥林匹克竞赛大纲2025（表格版）.md`\n- CSP-J 细目：`/home/fslong/Documents/blog/uploads/statics/lesson/cpp/90-备战CSP-J/csp-j大纲规划.md`\n- CSP-S 细目：`/home/fslong/Documents/blog/uploads/statics/lesson/cpp/00-大纲/CSP-S 补充知识点大纲.md`\n\n## 下一步\n\n成 → `04-problem.md`\n\nFile v3.0.0:steps/04-problem.md\n\n# Step 4: 生题面\n\n## 目标\n\n生中文题面 `{WORK_DIR}/problem_zh.md`。\n\n## 铁律：仅译不编\n\n1. 仅译，保原构\n2. 禁 AI 内心戏：禁分析、推理、计算过程\n3. ❌ **禁解题思路/解法分析/题解**：题面只含描述、输入输出格式、样例、数据范围，不附任何解题指引或算法讲解\n4. 样例释：仅译原题释\n5. **禁改样例**：样例输入/输出必原封不动复，不增删改任一字\n6. **图片链处理**：题面中图片链接区分配图来源：\n   - **互联网链**（`http://` / `https://` 起）：原样保留，不删不替\n   - **本地图/附件**（PDF 提取、用户本地文件等）：拷贝至 `{WORK_DIR}/additional_file/`，题面中引用改为 `![](file://文件名)`，禁用 `images/` 目录\n7. **留示意**：题面原有示意图、表格、公式等必完整留\n\n## 标题格式\n\n`中文标题(英文原标题)`\n\n例：\n- `移除前导o(Trimo)`\n- `传感器数据记录(Sensor Data Logging)`\n\n## 题面格式\n\n```markdown\n<div class=\"water\">\n\n# 中文标题(英文原标题)\n\n#### 题目描述\n[中文翻译]\n\n#### 输入格式\n...\n\n#### 输出格式\n...\n\n#### 样例输入 #1\n...\n\n#### 样例输出 #1\n...\n\n#### 数据范围\n...\n\n#### 知识点与难度\n本题涉及的知识点从属于 **{GESP X级｜CSP-J｜CSP-S｜NOI}**，难度（CF Rating）：**XXXX**。\n\n> ⚠️ **等级 和 CF 分数 不得凭印象填！**\n> 必先读 **`03-gesp.md`**，以第二步「定级」结果填等级（知识点分类）：**GESP 大纲有→写 `GESP X级`；GESP 无（超纲）→循 2.5 兜底规则升到 `CSP-J`/`CSP-S`/`NOI`**。以第四步「定分」结果（score）填 CF 分数。\n> **CF 分数按难度评定（第四步 CF 档位判定），与等级无关**——同知识点可出 800 的语法题，也可出 1400+ 的应用题。\n> 二者均自 03-gesp.md 来，非 AI 自由发挥。CF 分数须与 `problem.yaml` 的 `score` 字段一致。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> ⚠️ **占位用，生测试数据后按实际分组更新说明列。**\n\n---\n\n> 出处：[原题链接](https://atcoder.jp/contests/abc453/tasks/abc453_a)  <!-- ⚠️ 出处行放题面末尾（</div> 前）；URL 来源必写原题链接；文件/文本/原创题省略此行 -->\n\n</div>\n```\n\n## 更名工作目录（要务！）\n\n生题面后，**将标题加入工作目录名**，增辨识：\n\n```bash\n# 定标题简写：\n# - 英文标题：取全标题，空格→下划线，转小写\n# - 中文标题：取前 4~8 字\n# 例：标题为\"移除前导o(Trimo)\" → 简写为\"移除前导o_Trimo\"\n#      标题为\"Sensor Data Logging\" → 简写为\"sensor_data_logging\"\n\nmv {WORK_DIR} {WORK_DIR}_{标题简写}\n# {WORK_DIR} = {WORK_DIR}_{标题简写}\n```\n\n> **注**：若 PID 为 null（原创题），径用标题简写：\n> ```bash\n> BASE_DIR=$(detect_desktop)\n> mv $BASE_DIR/work $BASE_DIR/work_{标题简写}\n> # {WORK_DIR} = $BASE_DIR/work_{标题简写}\n> ```\n\n## 下一步\n\n成 → `05-config.md`\n\nFile v3.0.0:steps/05-config.md\n\n# Step 5: 写配置\n\n## 目标\n\n写入 `{WORK_DIR}/problem.yaml`。\n\n## pid 命名\n\n```\n用户指定 > 比赛自命名 > null\n```\n\n### 比赛自命名\n\n格式：`{比赛简称}{场次}{题号}`\n\n| 来源 | 例 |\n|------|------|\n| AtCoder ABC | `abc453a` |\n| AtCoder ARC | `arc123a` |\n| Codeforces | `cf789a` |\n| LeetCode | `lc1234` |\n| Luogu | `lgP1001` |\n\n### 无比赛信息\n\n单题搬运且无定来源：`pid: \"null\"`\n\n## 配置格式\n\n```yaml\npid: \"abc453a\"\ntitle: \"移除前导o(Trimo)\"\nscore:  # AI 判定（03-gesp.md「第四步：CF 档位判定」，逐项判四维锁定档位）800~3500\nsource: \"https://atcoder.jp/contests/abc453/tasks/abc453_a\"\ntag:\n  - \"字符串\"\n  - \"模拟\"\n  - \"GESP 1级\"\n```\n\n## 注\n\n1. pid 按规而判，非无脑填 null\n2. title 必用 `中文(英文)` 格式\n3. **source 出处必填**：\n   - **URL 来源**：填原题 URL（必填），与题面出处行一致；OJ 于题目页渲染为可点击「原题出处」链接\n   - **文件/文本来源**：填来源说明（如文件名），无明确出处则 `null`\n   - **原创题**（pid 为 null）：`source: null`\n4. **score 分数必填（按 03-gesp.md 第四步档位判定）**：\n   - 范围 800~3500（与 Codeforces Rating 对齐）\n   - 按 **03-gesp.md「第四步：CF 档位判定」** 判定——**逐项判四维（思维拐点/算法门槛/数据规模/实现细节）锁定档位，禁直接给感觉分、禁查速查表、禁套公式、禁按 GESP 等级/星级映射**\n   - **水题给分克制**：零思维量者 ≤900，纯语法直套模板者 800\n   - 比赛中已知分数直接采用（如 CF 的 Rating）\n   - **禁写死默认值**，必须逐题判定后填入\n5. **tag 必含多项**：\n   - 1~3 个**知识点标签**（如\"字符串\"\"动态规划\"\"图论\"\"贪心\"\"模拟\"\"前缀和\"\"线段树\"等，贵精不贵多）\n   - 1 个**等级标签**——四级体系其一：`GESP X级` / `CSP-J` / `CSP-S` / `NOI`（按 03-gesp.md 第二步锚定）\n     - **GESP 大纲有**该知识点 → 写 `GESP X级`（X 与\"级\"间有空格）\n     - **GESP 大纲无（超纲）** → 循跨体系兜底规则（03-gesp.md 2.5）升到 `CSP-J` / `CSP-S` / `NOI`\n   - **禁**只写一个等级标签完事\n\n6. **等级标签必读 03-gesp.md 后填写**：\n   - ⚠️ 先读 **`03-gesp.md` → 第二步「定级」**，先查 GESP 大纲（2.1~2.3）；**GESP 无此知识点则查 2.4 跨体系锚定表 + 2.5 兜底规则，升到 CSP-J/CSP-S/NOI**\n   - ⚠️ 再读 **`03-gesp.md` → 第四步「CF 档位判定」** 判定 score（水题克制，零思维量 ≤900）\n   - **禁凭印象填等级**，背包 DP ≠ 四级递推（背包 ∈ 六级）；线段树 ≠ 五级（∈ 八级/CSP-S）\n   - `tag` 中的**等级标签**与 `score` 的判定，二者均以 03-gesp.md 为准，缺一不可\n\n## 测试数据分组配置\n\n测试数据之分组（HydroOJ subtask）在 `{WORK_DIR}/testdata/config.yaml` 中配，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 测试数据分组配置\n\n测试数据的分组（HydroOJ subtask）在 `testdata/config.yaml` 中配置，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 下一步\n\n成 → `06-std.md`\n\nFile v3.0.0:steps/06-std.md\n\n# Step 6: 实现标程\n\n## 目标\n\n写标准解题程序 `{WORK_DIR}/std.cpp`。\n\n## 模板\n\n```cpp\n#include <iostream>\n#include <vector>\n#include <map>\n#include <cmath>\n#include <set>\n#include <queue>\n#include <stack>\n#include <list>\n#include <tuple>\n#include <unordered_map>\n#include <algorithm>\n#include <climits>\n#include <tuple>\n#define endl '\\n'\n#define int long long\n#define pii pair<int, int>\nusing namespace std;\nconst int inf = 0x3f3f3f3f3f3f3f3f;\nconst int mod = 998244353;\nconst int mxn = 3e6 + 5;\n\nint n,a[114514];\nint c=0;\nsigned main()\n{\n    cin>>n;\n    for(int i=0;i<n;++i) cin>>a[i];\n    for(int i=0;i<n-2;++i)\n    {\n        c+=(a[i]<a[i+1] and a[i+1]>a[i+2]);\n    }\n    cout<<c<<endl;\n    return 0;\n}\n\n```\n\n## 要点\n\n1. 据题定算法\n2. OI 风格：**左大括号单独起一行**，**全局变量**，简变量名（如 `w`, `v`, `dp`, `n`, `m`）\n3. `#include <bits/stdc++.h>` 尽量少用，优先逐一声明所需头文件\n4. **STL 容器（vector / map / set 等）尽量少用**——优先用全局数组（`int dp[105][105]` 而非 `vector<vector<int>>`），确有必要时可用\n5. ⚠️ **禁 `memcpy` / `memset`**——数组拷贝用 `vector` 赋值（`auto prev = dp`），初始化用 `fill`\n6. ⚠️ **禁动态内存分配**——`new`/`malloc`/`vector.resize()` 均不可\n7. ⚠️ **字符串用 `std::string`，禁用 `char[]`**——读入用 `cin >> s` 或 `getline`，输出用 `s.c_str()`（如需）\n   - ❌ `char s[105]; scanf(\"%s\", s);`\n   - ✅ `string s; cin >> s;`\n8. ⚠️ **不引入 `<cstring>` / `<string.h>`**——禁 `char[]`、`memcpy`、`memset`。初始化用 `fill`，拷贝用赋值\n9. ⚠️ **禁止使用 C 语言的输入输出**——`scanf`/`printf` 均不可，必须用 `cin`/`cout`（或 `getline`）。头文件用 `<iostream>` 而非 `<stdio.h>`。\n   - ❌ `scanf(\"%d\", &n); printf(\"%d\\n\", ans);`\n   - ✅ `cin >> n; cout << ans << endl;`\n10. **除数组外，尽量用 C++ 写法**——结构体、算法、字符串处理等优先用 C++ 标准库（`std::sort`、`std::string`、`std::vector` 等），避免 C 风格（`qsort`、`char[]`、`strcpy` 等）。\n11. 时复杂度满足时限\n\n## ⚠️ 铁律：写后即验（生数据前）\n\n写完 std.cpp **必即**用题面样例验之，不跳：\n\n```bash\ncd {WORK_DIR}\ng++ std.cpp -o std -std=c++17\n\n# 逐样例输入验输出，一一对照题面\necho \"【样例输入1】\" | ./std\n# 核出与题面样例输出1一致否\n\necho \"【样例输入2】\" | ./std\n# 核出与题面样例输出2一致否\n\n# ... 诸样例逐一验\n```\n\n**禁**：\n- ❌ 写 std 不验样例即写 mkin.h / 生数据\n- ❌ 只验一样例即谓全对\n- ❌ 样例未过仍续生数据\n\n**必**：\n- ✅ 诸题面样例全过方可入下步\n- ✅ 样例不过则改 std.cpp，重验，至全过\n\n## 下一步\n\n诸样例过 → `07-testdata.md`\n\nArchive v2.7.0: 26 files, 44936 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1807b), question/problem.yaml (271b), question/std.cpp (619b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2312b), SKILL.md (5326b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (16722b), steps/04-problem.md (3045b), steps/05-config.md (2477b), steps/06-std.md (2363b), steps/07-testdata.md (8021b), steps/08-audit.md (5454b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5044b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1920b), steps/contest/03-move.md (4037b), _meta.json (127b)\n\nFile v2.7.0:SKILL.md\n\n---\nname: 搬题姬\nversion: 2.7.0\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写 GESP 等级：必含 1~3 个知识点标签 + 1 个等级标签，禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 忘填出处 source：URL 搬运必填原题 URL（problem.yaml 的 source 字段 + 题面出处行）**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOID 写完 std 不验样例：所有样例输入逐一喂入，输出须与题面完全一致，全过方可进入数据生成**\n- ⚠️ **AVOID 修改样例：样例输入/输出必原样复制，禁增删改任何字符**\n- ⚠️ **AVOID 删除图片链接：题面中 `![](url)`、`<img>` 标签等所有图片语法必原样保留**\n- ⚠️ **AVOID 删除示意图：题面原有示意图、表格、公式必完整保留**\n- ⚠️ **生成测试点时 AVOID 生成 problem_zh.md、problem.yaml**\n- ⚠️ **生成测试点时 AVOID 全局打包（09-package.md 之整个工作目录 zip），只打包 testdata/ 下文件**\n- ⚠️ **生成测试点时 AVOID 跳过 std.cpp：无标程则 .out 不出**\n- ⚠️ **生成测试点时 AVOID 只写样例数据：25 组全覆盖（含 Hack）**\n- ⚠️ **生成测试点时 AVOID 交付前不验证：必查 .in 格式、.out 与样例一致、文件成对存在**\n\n---\n\n## 入口\n\n读 steps/00-detect-url.md\n\nFile v2.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"2.7.0\",\n  \"publishedAt\": 1786691015153\n}\n\nFile v2.7.0:references/testdata-design.md\n\n# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| C1 | 无解情况 | 输出 -1, Impossible |\n| C2 | 唯一解 | 仅一种构造方案 |\n| C3 | 多解任意 | 任输一合法解即可 |\n\n---\n\n## 三、Hack 数据设计\n\n| 常见错误 | Hack 数据特征 | 代码示例 |\n|---------|--------------|---------|\n| **int 溢出** | 用近 2³¹-1 或 2⁶³-1 大数 | `fout << \"2147483647 2147483647\"` |\n| **边界漏判** | N=1, N=max, a[i]=0 | `fout << \"1\\n0\"` |\n| **精度误差** | 需 double 非 float，或浮点比较 | `fout << \"0.1 0.2\"`（=0.3?） |\n| **超时** | 迫 O(n²) 算法超限 | N=200000 逆序 |\n| **错误贪心** | 使贪心策略得非优解 | 经典反例数据 |\n| **负数取模** | C++ `-5 % 3` = -2（非 1） | 含负数的模运算 |\n| **未开 long long** | 两 int 相乘超 2³¹-1 | `fout << \"50000 50000\"` |\n| **数组越界** | n 上限 + 特殊访问 | n=100000 边界访问 |\n| **字符串结束符** | 含空格、换行 | `fout << \"abc def\"` |\n| **多测不清空** | 多组测试用例（T≥2） | T=2 且共用数据结构 |\n\n---\n\n## 四、各规模数据生成建议\n\n### 小规模（case 3-8）\n\n| 用例 | N 范围 | 目的 |\n|:----:|:------:|------|\n| 3-4 | [1, 5] | 最小合法输入 |\n| 5 | [5, 10] | 稍复杂 |\n| 6 | 特定构造 | 特殊性质 1（如单调递增） |\n| 7 | 特定构造 | 特殊性质 2（如全相同） |\n| 8 | 特定构造 | 特殊性质 3（据题定制） |\n\n### Hack 数据（case 9-11）\n\n每例针对一类常见错误。宁小勿大——越简单越方便定位错因。\n\n### 中规模（case 12-15）\n\nN 在 [100, 10000] 范围随机，可混入部分边界特征。\n\n### 大规模（case 16-20）\n\n| 用例 | N | 目的 |\n|:----:|:-:|------|\n| 16-17 | 上限 80% | 接近极限 |\n| 18 | 上限 100% | 极限压力 |\n| 19 | 上限 + 特殊构造 | 极限 + Hack |\n| 20 | 上限 + 全相同/全逆序 | 极限 + 退化 |\n\n### 随机回归（case 21-25）\n\nN 在 [1, 上限] 之间随意随机，类型混合，覆盖意外路径。\n\n---\n\n## 五、config.yaml 格式\n\n```yaml\ntype: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out\n```\n\n**注：**\n- 若 OJ 支持自动识别（文件名 1.in~25.in），可省 `subtasks` 只写顶层 `time`/`memory`\n- 用 `subtasks` 时必显式列出所有 `cases`\n- 顶层 `time`/`memory` 为全局默认，可被子任务覆盖\n- `subtasks[].id` 从 0 开始编\n\n---\n\n## 六、测试点分布表格式\n\n生数据后，**必**于 `problem_zh.md` 末（`</div>` 前）追加以下表格。此为硬性要求，两流程（常搬题/仅生测试点）皆同。\n\n### 示例\n\n```markdown\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |\n```\n\n### 各列规则\n\n| 列 | 规则 |\n|----|------|\n| Subtask | 对应 config.yaml 中 subtask.id |\n| 分值 | 该 subtask 的 score |\n| 测试点编号 | 该 subtask 覆盖的 case 编号范围（如 `1~2`、`3~8`） |\n| 说明 | 描述每组之规模与数据特征 |\n\n### 说明列撰写规范\n\n| 写法 | 说明 |\n|------|------|\n| `样例` | 样例数据 |\n| `小规模 N≤10` | 小规模随机，N 最大 10 |\n| `特殊: 全同值` | 所有值相等 |\n| `特殊: 严格递增` | 严格递增序列 |\n| `Hack: N=1边界` | Hack 边界漏判 |\n| `Hack: 大数值溢出` | Hack int 溢出 |\n| `中规模 N≈100~10000` | 中等规模 |\n| `大规模 N≈2e5~1e6 压力` | 大规模压力 |\n| `随机 N=1~1e6 回归` | 回归测试 |\n\n### 约束\n\n- ✅ 可写规模范围（N≤10、N≈1e5 等）\n- ✅ 可写构造类型（全同值、单调、链、菊花图等）\n- ❌ 禁写答案（ans=xx、输出 Yes/No 等）\n- ❌ 禁写具体计算值（d=99991、S=1e9 等）\n- ❌ 禁逐 case 列表（只按 subtask 分组）\n\nFile v2.7.0:question/problem_zh.md\n\n<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度（CF Rating）：**1200**。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> 生测试数据后，按实际 subtask 分组改写上表。\n\n</div>\n\nFile v2.7.0:skill-card.md\n\n## Description:\n\nImports programming-contest problems from OJ platforms such as AtCoder and Codeforces into standardized problem packages, or generates test data from user-provided problem statements.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fslong520](https://clawhub.ai/user/fslong520)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal developers, educators, and contest administrators use this skill to import OJ problems, format statements, generate standard solutions and test data, audit packages, and produce zip archives for judge systems.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can create and delete desktop work folders and produce zip archives.\n\nMitigation: Run it in a disposable workspace or sandbox and review resolved paths before execution.\n\nRisk: The skill can compile and run generated C++ programs to produce outputs.\n\nMitigation: Review generated source code and run it in a sandbox before accepting generated test data.\n\nRisk: The skill reads user-specified local files or attachments and browses OJ pages.\n\nMitigation: Use intended inputs only, verify source URLs, and avoid sensitive local files.\n\nRisk: Vague contest-related prompts can lead to broad file or browsing activity.\n\nMitigation: Provide exact problem URLs, files, or contest scope before invoking the skill.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/fslong520/skills/ojimport)\n- [Test data design reference](artifact/references/testdata-design.md)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Markdown guidance with C++ source, YAML configuration, generated test data files, and zip archives.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create problem_zh.md, problem.yaml, std.cpp, mkin.h, testdata .in/.out files, config.yaml, and packaged zip outputs.]\n\n## Skill Version(s):\n\n2.7.0 (source: server release and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.7.0:steps/00-detect-url.md\n\n# Step 0: 辨输入类\n\n## 目标\n\n辨输入为 URL、文件路径或直文本，单题或赛题。\n\n## ⚠️ 比赛搬运铁律\n\n若测得为比赛 URL（如 `/contests/abc454`）：\n\n1. **必先读 steps/contest/01-list.md** 创题面汇总文件\n2. **必逐题译之追加写入汇总文件**\n3. **禁跳过汇总文件直逐题搬运**\n4. **禁自对话上下文记忆题面**\n\n## 输入类型\n\n| 类型 | 判断条件 |\n|------|---------|\n| URL | 以 `http://` 或 `https://` 起 |\n| 文件路径 | 以 `/` 或 `./` 或 `~/` 起 |\n| 直文本 | 非URL亦非文件路径 |\n\n## URL 跳转\n\n| URL 特征 | 下一步 |\n|---------|--------|\n| 尾为 `/tasks` 或 `/problems` | `contest/01-list.md` |\n| 其他 | `02-get-info.md` |\n\n## 文件/文本跳转\n\n| 内容特征 | 下一步 |\n|---------|--------|\n| 多道题（多个 `---` 或多题号） | `contest/03-move.md` |\n| 单道题 | `01-init.md` → `02-get-info.md` |\n\n## 多题判法\n\n```python\ndef is_multi_problem(content):\n    if content.count(\"---\") >= 2:\n        return True\n    markers = [\"## A -\", \"## B -\", \"## C -\", \"## D -\", \"## E -\"]\n    if sum(1 for m in markers if m in content) >= 2:\n        return True\n    return False\n```\n\nFile v2.7.0:steps/01-init.md\n\n# Step 1: 环境初始化\n\n## 目标\n\n自模板目录复文件至带题目标识之工作目录。\n\n## 基路径\n\n### 桌面路径检测（跨平台）\n\n先检测用户桌面路径，后续所有工作目录创建于桌面。\n\n```bash\n# 自动检测桌面路径（支持 Linux / macOS / Windows）\n# 检测到路径后确保目录存在，不存在则创建\ndetect_desktop() {\n    local d=\"\"\n    # Linux: ~/.config/user-dirs.dirs 中有 XDG_DESKTOP_DIR\n    if [ -f \"$HOME/.config/user-dirs.dirs\" ]; then\n        . \"$HOME/.config/user-dirs.dirs\"\n        if [ -n \"$XDG_DESKTOP_DIR\" ] && [ -d \"$XDG_DESKTOP_DIR\" ]; then\n            echo \"$XDG_DESKTOP_DIR\"\n            return\n        fi\n    fi\n    # macOS: ~/Desktop\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 中文: ~/桌面\n    d=\"$HOME/桌面\";   [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 西班牙语: ~/Escritorio\n    d=\"$HOME/Escritorio\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Windows Git Bash / WSL: ~/Desktop (再试一次)\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # 兜底：使用 ~/Desktop，不存在则创建\n    mkdir -p \"$HOME/Desktop\"\n    echo \"$HOME/Desktop\"\n}\n```\n\n## 工作目录命名\n\n**格式：** `{BASE_DIR}/work_{PID}_{标题简写}`\n\n| 阶段 | 目录名 | 说明 |\n|------|--------|------|\n| 初始化时 | `{BASE_DIR}/work` 或 `{BASE_DIR}/work_{PID}` | PID已知则径用，未知暂用 `work` |\n| 得PID后（step 2） | `{BASE_DIR}/work_{PID}` | 自URL取PID后更名 |\n| 定标题后（step 4） | `{BASE_DIR}/work_{PID}_{标题简写}` | 生题面后加标题简写 |\n\n**标题简写规则：**\n- 英文标题：取完整标题，空格易下划线，转小写（如 `Trimo` → `trimo`）\n- 中文标题：取前 4~8 字（如 `移除前导o` → `移除前导o`）\n- 标题过长则截取前 20 字符\n\n> **工作目录变量**：后诸步骤中，以 `{WORK_DIR}` 指 `{BASE_DIR}/work_{PID}_{标题简写}`。\n> AI 当于上下文中记 `{WORK_DIR}` 之值，所有文件操作皆基于此目录。\n\n## 命令\n\n### 其一：PID 已知（自 URL 或上下文可定）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work_{PID} 2>/dev/null\ncp -r question $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 其二：PID 未知（首初始化）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work 2>/dev/null\ncp -r question $BASE_DIR/work\n# {WORK_DIR} = $BASE_DIR/work（后得信息后更名）\n```\n\n## 模板位置\n\n1. `$BASE_DIR/question/` — 若用户预置模板于桌面\n2. `SKILL.md 所在目录/question/` — 技能自带模板\n3. `当前工作目录/question/` — 兜底\n\n## 模板文件\n\n| 文件 | 用途 |\n|------|------|\n| `std.cpp` | 标程模板 |\n| `mkdata.cpp` | 数据生成器模板 |\n| `mkin.h` | 测试数据逻辑模板 |\n| `problem.yaml` | 配置文件模板 |\n\n## 后续路径\n\n后诸步骤引文件时用 `{WORK_DIR}/xxx` 而非 `work/xxx`。\nAI 当记 `{WORK_DIR}` 之值，下步一致。\n\n## 下一步\n\n成 → `02-get-info.md`\n\n败 → 查模板目录存否\n\nFile v2.7.0:steps/02-get-info.md\n\n# Step 2: 获取题目信息\n\n## 目标\n\n根据输入来源获取题目信息（PID、标题、题面内容）。\n\n## 浏览器工具优先级\n\n```\n1. urlgo（优先）\n2. BrowserUse（urlgo 不可用）\n3. WebFetch（以上都不可用，仅公开页面）\n```\n\n## 来源类型\n\n| 类型 | 处理 |\n|------|------|\n| URL | urlgo 访问 → snapshot → 解析 |\n| 题号 | 直接匹配 PID 格式 |\n| 文件 | 解析文件提取题目信息 |\n| 文本 | 解析用户给出的文本 |\n\n## PID 提取\n\n| 平台 | URL 格式 | PID 规则 |\n|------|---------|---------|\n| AtCoder | `/contests/abc451/tasks/abc451_a` | `abc451a` |\n| Codeforces | `/contest/71/problem/A` | `cf71a` |\n| LeetCode | `/problems/two-sum` | `lc1` |\n| Luogu | `/problem/P1001` | `p1001` |\n\n无法提取时 PID 填 `null`。\n\n## 重命名工作目录（关键！）\n\n提取到 PID 后，**立即重命名工作目录**，使其包含题目标识：\n\n### 如果当前目录是 `work`（即初始化时PID未知）：\n\n```bash\nBASE_DIR=$(detect_desktop)\nmv $BASE_DIR/work $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 如果当前目录已经是 `work_{PID}`（即初始化时已用PID）：\n\n无需操作，`{WORK_DIR}` 保持不变。\n\n### 如果 PID 为 null（无法提取）：\n\n保持 `{WORK_DIR}` 不变，后续步骤确定名称后再处理。\n\n## 下一步\n\n成功 → `03-gesp.md`\n\n失败 → 询问用户其他来源\n\nFile v2.7.0:steps/03-gesp.md\n\n# Step 3: GESP 知识点等级判定\n\n## 目标\n\n定题目知识点等级（GESP 1-8级）与难度等级（二者独立评估）。\n\n## 原则\n\n知识点等级 ≠ 题目难度。同知识点可出简题，亦可出难题。\n\n**先定级，后定难**：先按所涉知识点定GESP级别，后独立评估题目难度。\n\n---\n\n## 第一步：前置分析（必做）\n\n在判定等级前，先提取题目特征：\n\n### 1.1 输入输出特征\n\n| 特征 | 信息 | 提示 |\n|------|------|------|\n| 输入规模 | N 的最大值 | 判断算法复杂度要求 |\n| 输出类型 | 单值/序列/构造 | 影响解法选择 |\n| 多组数据 | T 的存在 | 可能涉及预处理 |\n\n### 1.2 数据范围速判\n\n| N 的范围 | 允许复杂度 | 常用算法 |\n|----------|-----------|---------|\n| N ≤ 20 | O(2^N) | 暴力枚举、位运算 |\n| N ≤ 1000 | O(N^2) | 暴力DP、简单图论 |\n| N ≤ 10^5 | O(N log N) | 二分、排序、线段树 |\n| N ≤ 10^6 | O(N) | 贪心、前缀和、并查集 |\n| N ≤ 10^9 | O(log N) 或 O(1) | 数学公式、矩阵快速幂 |\n\n### 1.3 空间限制\n\n| 限制 | 提示 |\n|------|------|\n| 256MB | 可开二维数组 |\n| 64MB | 注意空间优化 |\n| 16MB | 需滚动数组/压缩 |\n\n---\n\n## 第二步：大纲知识点识别\n\n依据 CCF GESP 官方大纲（2026版）将题目所涉知识点归入对应级别。\n\n### 2.1 核心知识总览\n\n| 级别 | 核心知识 | 定级提示 |\n|:----:|---------|---------|\n| 一级 | 变量、基本数据类型、顺序/分支/循环、基本运算、输入输出 | 无数组、无嵌套循环，仅有基础语法 |\n| 二级 | 存储与网络、流程图、ASCII编码、数据类型转换、**多层分支/循环嵌套**、数学函数 | 有嵌套循环，但无数组/字符串操作 |\n| 三级 | 数据编码、进制转换、位运算、算法描述、**一维数组、字符串、枚举法、模拟法** | 用到一维数组或字符串，或枚举/模拟算法 |\n| 四级 | **指针、结构体、二维/多维数组、函数、递推算法、排序算法（冒泡/插入/选择）、文件操作、异常处理** | 用到二维数组/结构体/指针，或递推/排序算法 |\n| 五级 | **初等数论、高精度运算、链表、二分查找/答案、递归、贪心、分治**（归并/快排） | 用到二分/贪心/递归/分治/数论/链表 |\n| 六级 | **树、哈夫曼树、二叉排序树、DFS/BFS、简单动态规划、面向对象、栈与队列** | 用到树/图遍历/DFS/BFS/简单DP/栈/队列 |\n| 七级 | 数学库函数、**复杂动态规划**（LIS/LCS/区间DP）、**图的定义与遍历、图论算法、哈希表** | 用到复杂DP、图论、哈希表 |\n| 八级 | 计数原理、排列组合、杨辉三角、**倍增法、图论算法综合**（MST/最短路）、算法优化 | 用到MST/最短路/倍增/组合数学/算法优化 |\n\n### 2.2 核心算法递进\n\n此表来自大纲附录。**判定时以题目所涉最高级算法为准。**\n\n| 级别 | 核心算法 |\n|:----:|---------|\n| 一级 | 无特定算法，基础编程 |\n| 二级 | 无特定算法，综合编程 |\n| 三级 | 枚举法、模拟法 |\n| 四级 | 递推算法、冒泡排序、插入排序、选择排序 |\n| 五级 | 二分查找/二分答案、递归、贪心算法、分治（归并排序、快速排序） |\n| 六级 | 深度优先搜索（DFS）、宽度优先搜索（BFS）、简单动态规划 |\n| 七级 | 复杂动态规划（LIS、LCS、区间DP）、图遍历算法 |\n| 八级 | 最小生成树、最短路径、算法优化 |\n\n### 2.3 核心数据结构递进\n\n此表来自大纲附录。**若题目使用某级数据结构，其定级不可低于该级。**\n\n| 级别 | 核心数据结构 | 说明 |\n|:----:|-------------|------|\n| 一级 | 基本数据类型（int、long long、float、double、char、bool） | 无复合结构 |\n| 二级 | 无新增 | 仅有基本类型 |\n| 三级 | **一维数组、字符串** | 用一维数组/字符串解题→下限三级 |\n| 四级 | **二维/多维数组、结构体、指针** | 用二维数组/结构体/指针→下限四级 |\n| 五级 | 链表（单链表、双链表、循环链表） | 用链表→下限五级 |\n| 六级 | 栈、队列、循环队列、树、二叉树 | 用栈/队列/树→下限六级 |\n| 七级 | 图（有向图、无向图）、哈希表 | 用图/哈希表→下限七级 |\n| 八级 | 无新增（综合应用） | 综合运用已有知识 |\n\n---\n\n## 第三步：定级（综合判定）\n\n### 3.1 核心规则\n\n1. **算法优先**：以最高级别算法为准定级（查 2.2 节）\n2. **数据结构设下限**：题目所需数据结构决定最低等级（查 2.3 节），算法等级若高于此则取算法\n3. **数学不计级**：组合数学、数论等理解性知识不计入定级\n4. **模板题降级**：若只需套模板，可酌情降一级\n\n### 3.2 组合判定表\n\n| 组合情况 | 定级规则 |\n|---------|---------|\n| 算法A + 算法B | 取 max(级别A, 级别B) |\n| 算法 + 数据结构 | 取 max(算法级别, 数据结构最低级别) |\n| 算法 + 数学 | 按算法定级 |\n| 多算法串联 | 取最高级算法 |\n| 多算法并行 | 取最高级算法 |\n\n### 3.3 等级边界判定\n\n| 情况 | 判定 |\n|------|------|\n| 一级 vs 二级 | 有无嵌套循环 |\n| 二级 vs 三级 | 有无数组/字符串操作 |\n| 三级 vs 四级 | 有无递推/排序/二维数组/结构体 |\n| 四级 vs 五级 | 有无二分/贪心/递归/链表 |\n| 五级 vs 六级 | 有无DFS/BFS/DP/树/栈/队列 |\n| 六级 vs 七级 | 有无复杂DP/图遍历/哈希表 |\n| 七级 vs 八级 | 有无MST/最短路/倍增 |\n\n### 3.4 定级示例\n\n| 题特征 | 最高算法 | 数据结构 | 数据结构下限 | 最终级别 |\n|-------|:-------:|:-------:|:----------:|:-------:|\n| A+B | 无 | 基本类型 | 一级 | **一级** |\n| 判断闰年，多分支 | 无 | 基本类型 | 一级 | **一级** |\n| 求1到N和，单层循环 | 无 | 基本类型 | 一级 | **一级** |\n| 打印九九表，嵌套循环 | 无 | 基本类型 | 一级 | **一级**（无数组） |\n| 数组最大值 | 无 | 一维数组 | 三级 | **三级** |\n| 字符串反转 | 无 | 字符串 | 三级 | **三级** |\n| 暴力枚举两数之和 | 枚举（三级） | 一维数组 | 三级 | **三级** |\n| 模拟井字棋 | 模拟（三级） | 二维数组 | 四级 | **四级** |\n| 雷域统计（二维数组遍历） | 无特定算法 | 二维数组 | 四级 | **四级** |\n| 结构体排序 | 排序（四级） | 结构体 | 四级 | **四级** |\n| 二分查找 | 二分（五级） | 一维数组 | 三级 | **五级**（算法>数据结构） |\n| 走迷宫DFS | DFS（六级） | 二维数组 | 四级 | **六级**（算法>数据结构） |\n| Dijkstra最短路 | 最短路（八级） | 图 | 七级 | **八级**（算法>数据结构） |\n\n---\n\n## 第四步：检查清单（必做）\n\n### 4.1 自查清单\n\n完成定级后，逐项检查：\n\n- [ ] **2.1 核心知识**：题目知识点覆盖哪一级核心知识？\n- [ ] **2.2 算法识别**：最高级算法查表后对应哪一级？\n- [ ] **2.3 数据结构下限**：所用数据结构设定了什么下限？\n- [ ] **3.1 综合判定**：取 max(算法级别, 数据结构下限) 后结果为何？\n- [ ] **数学不计级**：是否错误地将数学知识计入等级？\n- [ ] **边界情况**：是否处于等级边界？仔细判断。\n- [ ] **常见误判**：是否犯了常见误判中的错误？\n\n### 4.2 常见误判速查\n\n| 误判 | 正确 | 原因 |\n|------|------|------|\n| 求1到N和 → 一级 | **一级** ✅ | 单层循环，无数组，一级正确 |\n| 数组求最大最小值 → 二级 | **三级** | 一维数组是三级知识，数据结构下限三级 |\n| 二维数组遍历 → 三级 | **四级** | 二维数组是四级知识，数据结构下限四级 |\n| 结构体排序 → 三级 | **四级** | 结构体+排序均属四级 |\n| 二分查找+数组 → 三级 | **五级** | 算法优先：二分查找是五级 |\n| 递推+一维数组 → 三级 | **四级** | 算法优先：递推是四级 |\n| DFS走迷宫 → 四级 | **六级** | 算法优先：DFS是六级 |\n| 并查集 → 三级 | **七级** | 并查集是七级图算法 |\n| Dijkstra → 七级 | **八级** | 最短路是八级 |\n\n### 4.3 复核流程\n\n```\n1. 识别题目的核心知识 → 查 2.1 节初步定位\n2. 识别题目的最高级算法 → 查 2.2 节得算法级别\n3. 识别题目的最高级数据结构 → 查 2.3 节得数据结构下限\n4. 取 max(算法级别, 数据结构下限) → 初步定级\n5. 检查是否有\"数学不计级\"或\"模板可降级\"情况\n6. 对照 3.4 节示例和 4.2 节常见误判确认\n7. 输出最终定级\n```\n\n---\n\n## 第五步：定难（思维复杂度）\n\n**独立于GESP级别**：一级题可甚难（复杂嵌套），八级题可甚简（直套模板）。\n\n> ⚠️ **星级仅供内部定分参考，不写入题面。** 题面（problem_zh.md）难度标注直接采用第六步算出的 CF 分数（score），格式 `难度（CF Rating）：**XXXX**`，与 `problem.yaml` 的 `score` 一致。\n\n### 难度等级（五星制）\n\n| 星级 | 特征 | 举例 |\n|:----:|------|------|\n| ⭐ | 直套公式/模板，一步到位 | 直分支判断、数组逆序、简公式 |\n| ⭐⭐ | 需简变形或组合2知识点 | 结构体排序、多条件筛选 |\n| ⭐⭐⭐ | 需算法综合或思维转化 | DP态设计、图遍历变体 |\n| ⭐⭐⭐⭐ | 复杂优化、数据结构结合 | 线段树优化、复杂图论 |\n| ⭐⭐⭐⭐⭐ | 高难竞赛题 | 高级算法组合 |\n\n### 定难规则\n\n1. **看拐点**：需\"想一步\"否，而非\"直做\"？\n2. **看组合**：需组多不相关知识点否？\n3. **看边界**：正理边界需特殊思维否？\n4. **看数据**：需算法效率上动脑否？\n\n---\n\n## 第六步：定分（CF Rating 估算）\n\n**目标**：为题目估算 Codeforces Rating（800~3500），写入 `problem.yaml` 的 `score` 字段，并作为题面（problem_zh.md）的难度标注（`难度（CF Rating）：XXXX`）。\n\n> ⚠️ **评分按难度，不按 GESP 知识点等级**：\n> - GESP 等级（第三步）只用于**知识点分类**（写入 tag 的 `GESP X级`），**不参与定分**。\n> - 定分主轴是第五步的**难度星级**（思维量、实现复杂度），辅以算法门槛与数据规模修正。\n> - 同一知识点的题，难度可天差地别：\"二维数组初始化输出\"≈800，\"二维数组高级应用\"可达 1400+。定分只认难度，不认知识点层级。\n\n### 6.1 难度基分表（星级 → 基准 Rating）★ 主表\n\n以第五步「定难」的星级为唯一基分来源：\n\n| 难度星级 | 思维特征 | 基准分 | CF 参考 |\n|:--------:|:--------|:------:|---------|\n| ⭐ | 纯语法练习/直套模板/一步到位，零思维量（学生学完当节课就能做） | **800** | 语法题、固定输出题 |\n| ⭐⭐ | 需简变形或组合 2 个知识点，但一眼能看穿 | **1000** | 简单模拟/统计 |\n| ⭐⭐⭐ | 需算法综合或思维转化（关键一步要想） | **1300** | CF 189A (1300) |\n| ⭐⭐⭐⭐ | 复杂优化、数据结构结合、多步推理 | **1600** | CF 698A (1500~1600) |\n| ⭐⭐⭐⭐⭐ | 高难竞赛题（高级算法组合） | **2100** | CF 1132E (2100) |\n\n### 6.2 浮动修正\n\n#### 算法门槛修正（仅 ⭐ / ⭐⭐ 档适用）\n\n⭐/⭐⭐ 的题思维量低，但**算法本身的学习成本**也是难度的一部分（学生得先会这个算法才能套）。⭐⭐⭐ 及以上星级已含算法思维，不再叠加。\n\n| 题目所涉算法 | 修正值 |\n|:------------|:------:|\n| 无算法 / 模拟 / 枚举 / 基础数组 / 字符串 | ±0 |\n| 递推 / 排序 / 二分 / 贪心 | +150 |\n| DP / DFS / BFS / 栈队列 / 链表 | +300 |\n| 图论 / 复杂DP / 哈希 / 高级数据结构 | +400 |\n\n> 例：0/1 背包模板题 = ⭐⭐(1000) + DP(+300) = **1300**（对齐 CF 1446A）\n\n#### 数据规模修正\n\n| 规模特征 | 修正倾向 |\n|---------|---------|\n| 大 N（≥10^5），需效率思维 | +100 |\n| 无效率要求（小 N） | ±0 |\n| n≤20 需状压/暴搜（思维已计入星级） | 不叠加 |\n\n#### 实现复杂度修正\n\n| 特征 | 修正值 |\n|:----|:------:|\n| 长代码 / 多细节处理（边界、格式、字符串操作多） | +50~100 |\n| 极简代码（几行搞定） | ±0 |\n\n#### 已知 CF Rating（最高优先级）\n\n若题目来自 Codeforces 且已知 Rating：\n- **直接采用已知 Rating**，跳过估算\n- 例：CF Round 某题 Rating 1400 → `score: 1400`\n\n#### AtCoder → CF 难度换算\n\nAtCoder 题目难度分（题面所标 Difficulty）不可径用——须换算为 CF Rating 方可填入 `score`。\n\n| 优先级 | 方法 | 条件 |\n|:------:|------|------|\n| 最高 | Difficulty 分数换算 | 题面可见 AtCoder Difficulty 值 |\n| 次高 | 比赛位置估分 | 无 Difficulty 时，按比赛+题号估算 |\n| 最低 | 星级基分法（6.1） | 两者皆无，回退至星级估分 |\n\n##### 方法一：Difficulty 分数换算（优先）\n\nAtCoder 题面标有 Difficulty 值（如 `Difficulty: 1287`），按下表换算为 CF Rating。\n\n| AtCoder Difficulty | CF Rating 区间 | 取中值（快速参考） |\n|:------------------:|:--------------:|:------------------:|\n| 0~99 | 800 | 800 |\n| 100~399 | 800~900 | 850 |\n| 400~799 | 900~1100 | 1000 |\n| 800~1199 | 1100~1400 | 1250 |\n| 1200~1599 | 1400~1700 | 1550 |\n| 1600~1999 | 1700~2000 | 1850 |\n| 2000~2399 | 2000~2300 | 2150 |\n| 2400~2799 | 2300~2700 | 2500 |\n| 2800~3199 | 2700~3100 | 2900 |\n| 3200+ | 3100~3500 | 3300 |\n\n**换算公式**（同区间内插值用）：\n\n```\ndiff ≤ 100:  CF = 800\n100 < diff ≤ 400:  CF = 800 + (diff - 100) × 0.5\n400 < diff ≤ 1200: CF = 950 + (diff - 400) × 0.375\n1200 < diff ≤ 2000: CF = 1250 + (diff - 1200) × 0.75\n2000 < diff ≤ 2800: CF = 1850 + (diff - 2000) × 1.0\n2800 < diff: CF = 2650 + (diff - 2800) × 1.0, cap 3500\n```\n\n例：AtCoder Difficulty 1287\n→ 查表 1200~1599 区间 → CF 1400~1700\n→ 公式：1250 + (1287 - 1200) × 0.75 = 1250 + 65 = 1315 → 取整 1300\n\n##### 方法二：比赛位置估分（Difficulty 不可知时）\n\n| 比赛 | 题号 | CF 近似 |\n|:----:|:----:|:-------:|\n| ABC | A | 800~900 |\n| ABC | B | 900~1100 |\n| ABC | C | 1100~1300 |\n| ABC | D | 1300~1600 |\n| ABC | E | 1600~2000 |\n| ABC | F | 1900~2400 |\n| ABC | G（旧ARC） | 2200~2800 |\n| ARC | A(C) | 1600~2100 |\n| ARC | B(D) | 2000~2500 |\n| ARC | C(E) | 2400~2900 |\n| AGC | A | 2000~2800 |\n| AGC | B+ | 2800~3500 |\n\n**注意**：比赛位置法较粗糙，同一位置因场次不同可 ±200 偏差。有 Difficulty 值时务必用方法一。\n\n### 6.3 估分公式\n\n```\nscore = 星级基分(6.1) + 算法门槛修正(6.2) + 数据规模修正(6.2) + 实现复杂度修正(6.2)\n```\n\n- 结果须落在 800~3500 区间\n- 取整至 50 的倍数（如 800、1000、1150、1300、1450、1700）\n- **GESP 等级不参与公式**（仅作 tag 知识点分类）\n\n### 6.4 示例\n\n| 题特征 | 星级 | 算法门槛 | 估算 process | score |\n|-------|:----:|:--------:|-------------|:-----:|\n| A+B，无分支 | ⭐ | 无 | 800 | 800 |\n| 二维数组初始化输出（无输入） | ⭐ | 无 | 800 | 800 |\n| 打印九九表，嵌套循环 | ⭐ | 无 | 800 | 800 |\n| 一维数组统计，单循环 | ⭐⭐ | 无 | 1000 | 1000 |\n| 字符串反转 | ⭐⭐ | 无 | 1000 | 1000 |\n| 二分查找 + 数组 | ⭐⭐ | 二分 +150 | 1000 + 150 | 1150 |\n| **0/1 背包模板（采药）** | **⭐⭐** | **DP +300** | **1000 + 300** | **1300** |\n| **完全背包 + 最小化（零钱兑换）** | **⭐⭐⭐** | 星级已含 | 1300 | 1300 |\n| **完全背包 + 方案数（零钱兑换II）** | **⭐⭐⭐** | 星级已含 | 1300 | 1300 |\n| **树形 DP + 数据 2e5** | **⭐⭐⭐⭐** | 星级已含 | 1600 | 1600 |\n| Dijkstra 求最短路（模板） | ⭐⭐ | 图论 +400 | 1000 + 400 | 1400 |\n| Dijkstra 应用（多步变形） | ⭐⭐⭐⭐ | 星级已含 | 1600 | 1600 |\n| **逆向背包（硬币面值还原）** | **⭐⭐⭐⭐** | 星级已含 | 1600 | 1600 |\n| CF Round 已知 1600 | - | - | 直接采用 | 1600 |\n\n### 6.5 自检\n\n- [ ] `score` 在 800~3500 区间？\n- [ ] 定分以**难度星级**为主轴，未按 GESP 知识点等级映射？\n- [ ] ⭐/⭐⭐ 档题：算法门槛修正已应用？\n- [ ] 已知 CF Rating 者直接采用了？\n- [ ] AT/CF 比赛题标记了来源以便日后对照？\n\n---\n\n## 大纲要点（2026版）\n\n1. **数组限制**：三级/四级数组不含变长数组（vector）\n2. **函数限制**：四级函数不含Lambda/运算符重载\n3. **C++标准**：以C++11为准\n4. **复杂度**：需分析时间/空间复杂度\n\n## 下一步\n\n成 → `04-problem.md`\n\nFile v2.7.0:steps/04-problem.md\n\n# Step 4: 生题面\n\n## 目标\n\n生中文题面 `{WORK_DIR}/problem_zh.md`。\n\n## 铁律：仅译不编\n\n1. 仅译，保原构\n2. 禁 AI 内心戏：禁分析、推理、计算过程\n3. ❌ **禁解题思路/解法分析/题解**：题面只含描述、输入输出格式、样例、数据范围，不附任何解题指引或算法讲解\n4. 样例释：仅译原题释\n5. **禁改样例**：样例输入/输出必原封不动复，不增删改任一字\n6. **图片链处理**：题面中图片链接区分配图来源：\n   - **互联网链**（`http://` / `https://` 起）：原样保留，不删不替\n   - **本地图/附件**（PDF 提取、用户本地文件等）：拷贝至 `{WORK_DIR}/additional_file/`，题面中引用改为 `![](file://文件名)`，禁用 `images/` 目录\n7. **留示意**：题面原有示意图、表格、公式等必完整留\n\n## 标题格式\n\n`中文标题(英文原标题)`\n\n例：\n- `移除前导o(Trimo)`\n- `传感器数据记录(Sensor Data Logging)`\n\n## 题面格式\n\n```markdown\n<div class=\"water\">\n\n# 中文标题(英文原标题)\n\n> 出处：[原题链接](https://atcoder.jp/contests/abc453/tasks/abc453_a)  <!-- URL 来源必写原题链接；文件/文本/原创题省略此行 -->\n\n#### 题目描述\n[中文翻译]\n\n#### 输入格式\n...\n\n#### 输出格式\n...\n\n#### 样例输入 #1\n...\n\n#### 样例输出 #1\n...\n\n#### 数据范围\n...\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP X级**，难度（CF Rating）：**XXXX**。\n\n> ⚠️ **GESP X 级 和 CF 分数 不得凭印象填！**\n> 必先读 **`03-gesp.md`**，以第三步「定级」结果填 X（知识点分类），以第六步「定分」结果（score）填 CF 分数。\n> **CF 分数按难度评定（第六步），与 GESP 等级无关**——同知识点可出 800 的语法题，也可出 1400+ 的应用题。\n> 二者均自 03-gesp.md 来，非 AI 自由发挥。CF 分数须与 `problem.yaml` 的 `score` 字段一致。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> ⚠️ **占位用，生测试数据后按实际分组更新说明列。**\n\n</div>\n```\n\n## 更名工作目录（要务！）\n\n生题面后，**将标题加入工作目录名**，增辨识：\n\n```bash\n# 定标题简写：\n# - 英文标题：取全标题，空格→下划线，转小写\n# - 中文标题：取前 4~8 字\n# 例：标题为\"移除前导o(Trimo)\" → 简写为\"移除前导o_Trimo\"\n#      标题为\"Sensor Data Logging\" → 简写为\"sensor_data_logging\"\n\nmv {WORK_DIR} {WORK_DIR}_{标题简写}\n# {WORK_DIR} = {WORK_DIR}_{标题简写}\n```\n\n> **注**：若 PID 为 null（原创题），径用标题简写：\n> ```bash\n> BASE_DIR=$(detect_desktop)\n> mv $BASE_DIR/work $BASE_DIR/work_{标题简写}\n> # {WORK_DIR} = $BASE_DIR/work_{标题简写}\n> ```\n\n## 下一步\n\n成 → `05-config.md`\n\nFile v2.7.0:steps/05-config.md\n\n# Step 5: 写配置\n\n## 目标\n\n写入 `{WORK_DIR}/problem.yaml`。\n\n## pid 命名\n\n```\n用户指定 > 比赛自命名 > null\n```\n\n### 比赛自命名\n\n格式：`{比赛简称}{场次}{题号}`\n\n| 来源 | 例 |\n|------|------|\n| AtCoder ABC | `abc453a` |\n| AtCoder ARC | `arc123a` |\n| Codeforces | `cf789a` |\n| LeetCode | `lc1234` |\n| Luogu | `lgP1001` |\n\n### 无比赛信息\n\n单题搬运且无定来源：`pid: \"null\"`\n\n## 配置格式\n\n```yaml\npid: \"abc453a\"\ntitle: \"移除前导o(Trimo)\"\nscore:  # AI 按 03-gesp.md「第六步：定分」规则估算\nsource: \"https://atcoder.jp/contests/abc453/tasks/abc453_a\"\ntag:\n  - \"字符串\"\n  - \"模拟\"\n  - \"GESP 1级\"\n```\n\n## 注\n\n1. pid 按规而判，非无脑填 null\n2. title 必用 `中文(英文)` 格式\n3. **score 分数必填（AI 动态估算）**：\n   - 范围 800~3500（与 Codeforces Rating 对齐）\n   - 按 **03-gesp.md「第六步：定分」** 规则估算——**以难度星级为主轴，不按 GESP 等级映射**\n   - 比赛中已知分数直接采用（如 CF 的 Rating）\n   - **禁写死默认值**，必须逐题分析后填入\n4. **tag 必含多项**：\n   - 1~3 个**知识点标签**（如\"字符串\"\"动态规划\"\"图论\"\"贪心\"\"模拟\"\"前缀和\"等，贵精不贵多）\n   - 1 个**等级标签**（`GESP X级`，注意 X 与数字间有空格）\n   - **禁**只写一个等级标签完事\n\n4b. **source 出处必填**：\n   - **URL 来源**：填原题 URL（必填），与题面出处行一致\n   - **文件/文本来源**：填来源说明（如文件名），无明确出处则 `null`\n   - **原创题**（pid 为 null）：`source: null`\n\n5. **等级标签必读 03-gesp.md 后填写**：\n   - ⚠️ 先读 **`03-gesp.md` → 第二步「算法分类详表」**，对照题目算法确定 GESP 等级\n   - ⚠️ 再读 **`03-gesp.md` → 第六步「定分」** 估算 score\n   - **禁凭印象填等级**，背包 DP ≠ 四级递推（背包 ∈ 六级）\n   - `tag` 中的 `GESP X级` 与 `score` 的估算，二者均以 03-gesp.md 为准，缺一不可\n\n## 测试数据分组配置\n\n测试数据之分组（HydroOJ subtask）在 `{WORK_DIR}/testdata/config.yaml` 中配，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 测试数据分组配置\n\n测试数据的分组（HydroOJ subtask）在 `testdata/config.yaml` 中配置，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 下一步\n\n成 → `06-std.md`\n\nFile v2.7.0:steps/06-std.md\n\n# Step 6: 实现标程\n\n## 目标\n\n写标准解题程序 `{WORK_DIR}/std.cpp`。\n\n## 模板\n\n```cpp\n#include <iostream>\n#include <vector>\n#include <map>\n#include <cmath>\n#include <set>\n#include <queue>\n#include <stack>\n#include <list>\n#include <tuple>\n#include <unordered_map>\n#include <algorithm>\n#include <climits>\n#include <tuple>\n#define endl '\\n'\n#define int long long\n#define pii pair<int, int>\nusing namespace std;\nconst int inf = 0x3f3f3f3f3f3f3f3f;\nconst int mod = 998244353;\nconst int mxn = 3e6 + 5;\n\nint n,a[114514];\nint c=0;\nsigned main()\n{\n    cin>>n;\n    for(int i=0;i<n;++i) cin>>a[i];\n    for(int i=0;i<n-2;++i)\n    {\n        c+=(a[i]<a[i+1] and a[i+1]>a[i+2]);\n    }\n    cout<<c<<endl;\n    return 0;\n}\n\n```\n\n## 要点\n\n1. 据题定算法\n2. OI 风格：**左大括号单独起一行**，**全局变量**，简变量名（如 `w`, `v`, `dp`, `n`, `m`）\n3. `#include <bits/stdc++.h>` 尽量少用，优先逐一声明所需头文件\n4. **STL 容器（vector / map / set 等）尽量少用**——优先用全局数组（`int dp[105][105]` 而非 `vector<vector<int>>`），确有必要时可用\n5. ⚠️ **禁 `memcpy` / `memset`**——数组拷贝用 `vector` 赋值（`auto prev = dp`），初始化用 `fill`\n6. ⚠️ **禁动态内存分配**——`new`/`malloc`/`vector.resize()` 均不可\n7. ⚠️ **字符串用 `std::string`，禁用 `char[]`**——读入用 `cin >> s` 或 `getline`，输出用 `s.c_str()`（如需）\n   - ❌ `char s[105]; scanf(\"%s\", s);`\n   - ✅ `string s; cin >> s;`\n8. ⚠️ **不引入 `<cstring>` / `<string.h>`**——禁 `char[]`、`memcpy`、`memset`。初始化用 `fill`，拷贝用赋值\n9. 时复杂度满足时限\n\n## ⚠️ 铁律：写后即验（生数据前）\n\n写完 std.cpp **必即**用题面样例验之，不跳：\n\n```bash\ncd {WORK_DIR}\ng++ std.cpp -o std -std=c++17\n\n# 逐样例输入验输出，一一对照题面\necho \"【样例输入1】\" | ./std\n# 核出与题面样例输出1一致否\n\necho \"【样例输入2】\" | ./std\n# 核出与题面样例输出2一致否\n\n# ... 诸样例逐一验\n```\n\n**禁**：\n- ❌ 写 std 不验样例即写 mkin.h / 生数据\n- ❌ 只验一样例即谓全对\n- ❌ 样例未过仍续生数据\n\n**必**：\n- ✅ 诸题面样例全过方可入下步\n- ✅ 样例不过则改 std.cpp，重验，至全过\n\n## 下一步\n\n诸样例过 → `07-testdata.md`\n\nArchive v2.6.0: 26 files, 44448 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1807b), question/problem.yaml (164b), question/std.cpp (619b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2389b), SKILL.md (5204b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (16722b), steps/04-problem.md (2890b), steps/05-config.md (2163b), steps/06-std.md (2363b), steps/07-testdata.md (8021b), steps/08-audit.md (5246b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5044b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1842b), steps/contest/03-move.md (3830b), _meta.json (127b)\n\nFile v2.6.0:SKILL.md\n\n---\nname: 搬题姬\nversion: 2.6.0\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写 GESP 等级：必含 1~3 个知识点标签 + 1 个等级标签，禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOID 写完 std 不验样例：所有样例输入逐一喂入，输出须与题面完全一致，全过方可进入数据生成**\n- ⚠️ **AVOID 修改样例：样例输入/输出必原样复制，禁增删改任何字符**\n- ⚠️ **AVOID 删除图片链接：题面中 `![](url)`、`<img>` 标签等所有图片语法必原样保留**\n- ⚠️ **AVOID 删除示意图：题面原有示意图、表格、公式必完整保留**\n- ⚠️ **生成测试点时 AVOID 生成 problem_zh.md、problem.yaml**\n- ⚠️ **生成测试点时 AVOID 全局打包（09-package.md 之整个工作目录 zip），只打包 testdata/ 下文件**\n- ⚠️ **生成测试点时 AVOID 跳过 std.cpp：无标程则 .out 不出**\n- ⚠️ **生成测试点时 AVOID 只写样例数据：25 组全覆盖（含 Hack）**\n- ⚠️ **生成测试点时 AVOID 交付前不验证：必查 .in 格式、.out 与样例一致、文件成对存在**\n\n---\n\n## 入口\n\n读 steps/00-detect-url.md\n\nFile v2.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"2.6.0\",\n  \"publishedAt\": 1786238072932\n}\n\nFile v2.6.0:references/testdata-design.md\n\n# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| C1 | 无解情况 | 输出 -1, Impossible |\n| C2 | 唯一解 | 仅一种构造方案 |\n| C3 | 多解任意 | 任输一合法解即可 |\n\n---\n\n## 三、Hack 数据设计\n\n| 常见错误 | Hack 数据特征 | 代码示例 |\n|---------|--------------|---------|\n| **int 溢出** | 用近 2³¹-1 或 2⁶³-1 大数 | `fout << \"2147483647 2147483647\"` |\n| **边界漏判** | N=1, N=max, a[i]=0 | `fout << \"1\\n0\"` |\n| **精度误差** | 需 double 非 float，或浮点比较 | `fout << \"0.1 0.2\"`（=0.3?） |\n| **超时** | 迫 O(n²) 算法超限 | N=200000 逆序 |\n| **错误贪心** | 使贪心策略得非优解 | 经典反例数据 |\n| **负数取模** | C++ `-5 % 3` = -2（非 1） | 含负数的模运算 |\n| **未开 long long** | 两 int 相乘超 2³¹-1 | `fout << \"50000 50000\"` |\n| **数组越界** | n 上限 + 特殊访问 | n=100000 边界访问 |\n| **字符串结束符** | 含空格、换行 | `fout << \"abc def\"` |\n| **多测不清空** | 多组测试用例（T≥2） | T=2 且共用数据结构 |\n\n---\n\n## 四、各规模数据生成建议\n\n### 小规模（case 3-8）\n\n| 用例 | N 范围 | 目的 |\n|:----:|:------:|------|\n| 3-4 | [1, 5] | 最小合法输入 |\n| 5 | [5, 10] | 稍复杂 |\n| 6 | 特定构造 | 特殊性质 1（如单调递增） |\n| 7 | 特定构造 | 特殊性质 2（如全相同） |\n| 8 | 特定构造 | 特殊性质 3（据题定制） |\n\n### Hack 数据（case 9-11）\n\n每例针对一类常见错误。宁小勿大——越简单越方便定位错因。\n\n### 中规模（case 12-15）\n\nN 在 [100, 10000] 范围随机，可混入部分边界特征。\n\n### 大规模（case 16-20）\n\n| 用例 | N | 目的 |\n|:----:|:-:|------|\n| 16-17 | 上限 80% | 接近极限 |\n| 18 | 上限 100% | 极限压力 |\n| 19 | 上限 + 特殊构造 | 极限 + Hack |\n| 20 | 上限 + 全相同/全逆序 | 极限 + 退化 |\n\n### 随机回归（case 21-25）\n\nN 在 [1, 上限] 之间随意随机，类型混合，覆盖意外路径。\n\n---\n\n## 五、config.yaml 格式\n\n```yaml\ntype: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out\n```\n\n**注：**\n- 若 OJ 支持自动识别（文件名 1.in~25.in），可省 `subtasks` 只写顶层 `time`/`memory`\n- 用 `subtasks` 时必显式列出所有 `cases`\n- 顶层 `time`/`memory` 为全局默认，可被子任务覆盖\n- `subtasks[].id` 从 0 开始编\n\n---\n\n## 六、测试点分布表格式\n\n生数据后，**必**于 `problem_zh.md` 末（`</div>` 前）追加以下表格。此为硬性要求，两流程（常搬题/仅生测试点）皆同。\n\n### 示例\n\n```markdown\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |\n```\n\n### 各列规则\n\n| 列 | 规则 |\n|----|------|\n| Subtask | 对应 config.yaml 中 subtask.id |\n| 分值 | 该 subtask 的 score |\n| 测试点编号 | 该 subtask 覆盖的 case 编号范围（如 `1~2`、`3~8`） |\n| 说明 | 描述每组之规模与数据特征 |\n\n### 说明列撰写规范\n\n| 写法 | 说明 |\n|------|------|\n| `样例` | 样例数据 |\n| `小规模 N≤10` | 小规模随机，N 最大 10 |\n| `特殊: 全同值` | 所有值相等 |\n| `特殊: 严格递增` | 严格递增序列 |\n| `Hack: N=1边界` | Hack 边界漏判 |\n| `Hack: 大数值溢出` | Hack int 溢出 |\n| `中规模 N≈100~10000` | 中等规模 |\n| `大规模 N≈2e5~1e6 压力` | 大规模压力 |\n| `随机 N=1~1e6 回归` | 回归测试 |\n\n### 约束\n\n- ✅ 可写规模范围（N≤10、N≈1e5 等）\n- ✅ 可写构造类型（全同值、单调、链、菊花图等）\n- ❌ 禁写答案（ans=xx、输出 Yes/No 等）\n- ❌ 禁写具体计算值（d=99991、S=1e9 等）\n- ❌ 禁逐 case 列表（只按 subtask 分组）\n\nFile v2.6.0:question/problem_zh.md\n\n<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度（CF Rating）：**1200**。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> 生测试数据后，按实际 subtask 分组改写上表。\n\n</div>\n\nFile v2.6.0:skill-card.md\n\n## Description:\n\n从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fslong520](https://clawhub.ai/user/fslong520)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, educators, and contest maintainers use this skill to import OJ programming problems, translate and normalize problem statements, generate standard solutions, create 25-case test data sets, and package HydroOJ-compatible problem archives.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may create Desktop work folders and delete prior work_* or testdata outputs during setup and cleanup.\n\nMitigation: Run it in a disposable workspace or sandbox, confirm target paths before cleanup or packaging, and keep backups of any existing contest work.\n\nRisk: The skill compiles and runs generated C++ locally to produce expected outputs.\n\nMitigation: Review std.cpp, mkin.h, and mkdata.cpp before execution, and compile/run them only in an isolated environment you are comfortable using.\n\nRisk: Generated problem statements, scoring metadata, and test data can be wrong if the source problem is parsed incorrectly.\n\nMitigation: Verify imported statements, samples, problem.yaml, testdata/config.yaml, and the generated .in/.out pairs before publishing or uploading a package.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/fslong520/skills/ojimport)\n- [Test Data Design Reference](references/testdata-design.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Markdown problem statements, C++ source files, YAML configuration, generated .in/.out test data, and ZIP archives]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces standardized OJ problem packages and testdata.zip files after local generation, verification, and packaging steps.]\n\n## Skill Version(s):\n\n2.6.0 (source: frontmatter and release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.6.0:steps/00-detect-url.md\n\n# Step 0: 辨输入类\n\n## 目标\n\n辨输入为 URL、文件路径或直文本，单题或赛题。\n\n## ⚠️ 比赛搬运铁律\n\n若测得为比赛 URL（如 `/contests/abc454`）：\n\n1. **必先读 steps/contest/01-list.md** 创题面汇总文件\n2. **必逐题译之追加写入汇总文件**\n3. **禁跳过汇总文件直逐题搬运**\n4. **禁自对话上下文记忆题面**\n\n## 输入类型\n\n| 类型 | 判断条件 |\n|------|---------|\n| URL | 以 `http://` 或 `https://` 起 |\n| 文件路径 | 以 `/` 或 `./` 或 `~/` 起 |\n| 直文本 | 非URL亦非文件路径 |\n\n## URL 跳转\n\n| URL 特征 | 下一步 |\n|---------|--------|\n| 尾为 `/tasks` 或 `/problems` | `contest/01-list.md` |\n| 其他 | `02-get-info.md` |\n\n## 文件/文本跳转\n\n| 内容特征 | 下一步 |\n|---------|--------|\n| 多道题（多个 `---` 或多题号） | `contest/03-move.md` |\n| 单道题 | `01-init.md` → `02-get-info.md` |\n\n## 多题判法\n\n```python\ndef is_multi_problem(content):\n    if content.count(\"---\") >= 2:\n        return True\n    markers = [\"## A -\", \"## B -\", \"## C -\", \"## D -\", \"## E -\"]\n    if sum(1 for m in markers if m in content) >= 2:\n        return True\n    return False\n```\n\nFile v2.6.0:steps/01-init.md\n\n# Step 1: 环境初始化\n\n## 目标\n\n自模板目录复文件至带题目标识之工作目录。\n\n## 基路径\n\n### 桌面路径检测（跨平台）\n\n先检测用户桌面路径，后续所有工作目录创建于桌面。\n\n```bash\n# 自动检测桌面路径（支持 Linux / macOS / Windows）\n# 检测到路径后确保目录存在，不存在则创建\ndetect_desktop() {\n    local d=\"\"\n    # Linux: ~/.config/user-dirs.dirs 中有 XDG_DESKTOP_DIR\n    if [ -f \"$HOME/.config/user-dirs.dirs\" ]; then\n        . \"$HOME/.config/user-dirs.dirs\"\n        if [ -n \"$XDG_DESKTOP_DIR\" ] && [ -d \"$XDG_DESKTOP_DIR\" ]; then\n            echo \"$XDG_DESKTOP_DIR\"\n            return\n        fi\n    fi\n    # macOS: ~/Desktop\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 中文: ~/桌面\n    d=\"$HOME/桌面\";   [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 西班牙语: ~/Escritorio\n    d=\"$HOME/Escritorio\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Windows Git Bash / WSL: ~/Desktop (再试一次)\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # 兜底：使用 ~/Desktop，不存在则创建\n    mkdir -p \"$HOME/Desktop\"\n    echo \"$HOME/Desktop\"\n}\n```\n\n## 工作目录命名\n\n**格式：** `{BASE_DIR}/work_{PID}_{标题简写}`\n\n| 阶段 | 目录名 | 说明 |\n|------|--------|------|\n| 初始化时 | `{BASE_DIR}/work` 或 `{BASE_DIR}/work_{PID}` | PID已知则径用，未知暂用 `work` |\n| 得PID后（step 2） | `{BASE_DIR}/work_{PID}` | 自URL取PID后更名 |\n| 定标题后（step 4） | `{BASE_DIR}/work_{PID}_{标题简写}` | 生题面后加标题简写 |\n\n**标题简写规则：**\n- 英文标题：取完整标题，空格易下划线，转小写（如 `Trimo` → `trimo`）\n- 中文标题：取前 4~8 字（如 `移除前导o` → `移除前导o`）\n- 标题过长则截取前 20 字符\n\n> **工作目录变量**：后诸步骤中，以 `{WORK_DIR}` 指 `{BASE_DIR}/work_{PID}_{标题简写}`。\n> AI 当于上下文中记 `{WORK_DIR}` 之值，所有文件操作皆基于此目录。\n\n## 命令\n\n### 其一：PID 已知（自 URL 或上下文可定）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work_{PID} 2>/dev/null\ncp -r question $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 其二：PID 未知（首初始化）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work 2>/dev/null\ncp -r question $BASE_DIR/work\n# {WORK_DIR} = $BASE_DIR/work（后得信息后更名）\n```\n\n## 模板位置\n\n1. `$BASE_DIR/question/` — 若用户预置模板于桌面\n2. `SKILL.md 所在目录/question/` — 技能自带模板\n3. `当前工作目录/question/` — 兜底\n\n## 模板文件\n\n| 文件 | 用途 |\n|------|------|\n| `std.cpp` | 标程模板 |\n| `mkdata.cpp` | 数据生成器模板 |\n| `mkin.h` | 测试数据逻辑模板 |\n| `problem.yaml` | 配置文件模板 |\n\n## 后续路径\n\n后诸步骤引文件时用 `{WORK_DIR}/xxx` 而非 `work/xxx`。\nAI 当记 `{WORK_DIR}` 之值，下步一致。\n\n## 下一步\n\n成 → `02-get-info.md`\n\n败 → 查模板目录存否\n\nFile v2.6.0:steps/02-get-info.md\n\n# Step 2: 获取题目信息\n\n## 目标\n\n根据输入来源获取题目信息（PID、标题、题面内容）。\n\n## 浏览器工具优先级\n\n```\n1. urlgo（优先）\n2. BrowserUse（urlgo 不可用）\n3. WebFetch（以上都不可用，仅公开页面）\n```\n\n## 来源类型\n\n| 类型 | 处理 |\n|------|------|\n| URL | urlgo 访问 → snapshot → 解析 |\n| 题号 | 直接匹配 PID 格式 |\n| 文件 | 解析文件提取题目信息 |\n| 文本 | 解析用户给出的文本 |\n\n## PID 提取\n\n| 平台 | URL 格式 | PID 规则 |\n|------|---------|---------|\n| AtCoder | `/contests/abc451/tasks/abc451_a` | `abc451a` |\n| Codeforces | `/contest/71/problem/A` | `cf71a` |\n| LeetCode | `/problems/two-sum` | `lc1` |\n| Luogu | `/problem/P1001` | `p1001` |\n\n无法提取时 PID 填 `null`。\n\n## 重命名工作目录（关键！）\n\n提取到 PID 后，**立即重命名工作目录**，使其包含题目标识：\n\n### 如果当前目录是 `work`（即初始化时PID未知）：\n\n```bash\nBASE_DIR=$(detect_desktop)\nmv $BASE_DIR/work $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 如果当前目录已经是 `work_{PID}`（即初始化时已用PID）：\n\n无需操作，`{WORK_DIR}` 保持不变。\n\n### 如果 PID 为 null（无法提取）：\n\n保持 `{WORK_DIR}` 不变，后续步骤确定名称后再处理。\n\n## 下一步\n\n成功 → `03-gesp.md`\n\n失败 → 询问用户其他来源\n\nFile v2.6.0:steps/03-gesp.md\n\n# Step 3: GESP 知识点等级判定\n\n## 目标\n\n定题目知识点等级（GESP 1-8级）与难度等级（二者独立评估）。\n\n## 原则\n\n知识点等级 ≠ 题目难度。同知识点可出简题，亦可出难题。\n\n**先定级，后定难**：先按所涉知识点定GESP级别，后独立评估题目难度。\n\n---\n\n## 第一步：前置分析（必做）\n\n在判定等级前，先提取题目特征：\n\n### 1.1 输入输出特征\n\n| 特征 | 信息 | 提示 |\n|------|------|------|\n| 输入规模 | N 的最大值 | 判断算法复杂度要求 |\n| 输出类型 | 单值/序列/构造 | 影响解法选择 |\n| 多组数据 | T 的存在 | 可能涉及预处理 |\n\n### 1.2 数据范围速判\n\n| N 的范围 | 允许复杂度 | 常用算法 |\n|----------|-----------|---------|\n| N ≤ 20 | O(2^N) | 暴力枚举、位运算 |\n| N ≤ 1000 | O(N^2) | 暴力DP、简单图论 |\n| N ≤ 10^5 | O(N log N) | 二分、排序、线段树 |\n| N ≤ 10^6 | O(N) | 贪心、前缀和、并查集 |\n| N ≤ 10^9 | O(log N) 或 O(1) | 数学公式、矩阵快速幂 |\n\n### 1.3 空间限制\n\n| 限制 | 提示 |\n|------|------|\n| 256MB | 可开二维数组 |\n| 64MB | 注意空间优化 |\n| 16MB | 需滚动数组/压缩 |\n\n---\n\n## 第二步：大纲知识点识别\n\n依据 CCF GESP 官方大纲（2026版）将题目所涉知识点归入对应级别。\n\n### 2.1 核心知识总览\n\n| 级别 | 核心知识 | 定级提示 |\n|:----:|---------|---------|\n| 一级 | 变量、基本数据类型、顺序/分支/循环、基本运算、输入输出 | 无数组、无嵌套循环，仅有基础语法 |\n| 二级 | 存储与网络、流程图、ASCII编码、数据类型转换、**多层分支/循环嵌套**、数学函数 | 有嵌套循环，但无数组/字符串操作 |\n| 三级 | 数据编码、进制转换、位运算、算法描述、**一维数组、字符串、枚举法、模拟法** | 用到一维数组或字符串，或枚举/模拟算法 |\n| 四级 | **指针、结构体、二维/多维数组、函数、递推算法、排序算法（冒泡/插入/选择）、文件操作、异常处理** | 用到二维数组/结构体/指针，或递推/排序算法 |\n| 五级 | **初等数论、高精度运算、链表、二分查找/答案、递归、贪心、分治**（归并/快排） | 用到二分/贪心/递归/分治/数论/链表 |\n| 六级 | **树、哈夫曼树、二叉排序树、DFS/BFS、简单动态规划、面向对象、栈与队列** | 用到树/图遍历/DFS/BFS/简单DP/栈/队列 |\n| 七级 | 数学库函数、**复杂动态规划**（LIS/LCS/区间DP）、**图的定义与遍历、图论算法、哈希表** | 用到复杂DP、图论、哈希表 |\n| 八级 | 计数原理、排列组合、杨辉三角、**倍增法、图论算法综合**（MST/最短路）、算法优化 | 用到MST/最短路/倍增/组合数学/算法优化 |\n\n### 2.2 核心算法递进\n\n此表来自大纲附录。**判定时以题目所涉最高级算法为准。**\n\n| 级别 | 核心算法 |\n|:----:|---------|\n| 一级 | 无特定算法，基础编程 |\n| 二级 | 无特定算法，综合编程 |\n| 三级 | 枚举法、模拟法 |\n| 四级 | 递推算法、冒泡排序、插入排序、选择排序 |\n| 五级 | 二分查找/二分答案、递归、贪心算法、分治（归并排序、快速排序） |\n| 六级 | 深度优先搜索（DFS）、宽度优先搜索（BFS）、简单动态规划 |\n| 七级 | 复杂动态规划（LIS、LCS、区间DP）、图遍历算法 |\n| 八级 | 最小生成树、最短路径、算法优化 |\n\n### 2.3 核心数据结构递进\n\n此表来自大纲附录。**若题目使用某级数据结构，其定级不可低于该级。**\n\n| 级别 | 核心数据结构 | 说明 |\n|:----:|-------------|------|\n| 一级 | 基本数据类型（int、long long、float、double、char、bool） | 无复合结构 |\n| 二级 | 无新增 | 仅有基本类型 |\n| 三级 | **一维数组、字符串** | 用一维数组/字符串解题→下限三级 |\n| 四级 | **二维/多维数组、结构体、指针** | 用二维数组/结构体/指针→下限四级 |\n| 五级 | 链表（单链表、双链表、循环链表） | 用链表→下限五级 |\n| 六级 | 栈、队列、循环队列、树、二叉树 | 用栈/队列/树→下限六级 |\n| 七级 | 图（有向图、无向图）、哈希表 | 用图/哈希表→下限七级 |\n| 八级 | 无新增（综合应用） | 综合运用已有知识 |\n\n---\n\n## 第三步：定级（综合判定）\n\n### 3.1 核心规则\n\n1. **算法优先**：以最高级别算法为准定级（查 2.2 节）\n2. **数据结构设下限**：题目所需数据结构决定最低等级（查 2.3 节），算法等级若高于此则取算法\n3. **数学不计级**：组合数学、数论等理解性知识不计入定级\n4. **模板题降级**：若只需套模板，可酌情降一级\n\n### 3.2 组合判定表\n\n| 组合情况 | 定级规则 |\n|---------|---------|\n| 算法A + 算法B | 取 max(级别A, 级别B) |\n| 算法 + 数据结构 | 取 max(算法级别, 数据结构最低级别) |\n| 算法 + 数学 | 按算法定级 |\n| 多算法串联 | 取最高级算法 |\n| 多算法并行 | 取最高级算法 |\n\n### 3.3 等级边界判定\n\n| 情况 | 判定 |\n|------|------|\n| 一级 vs 二级 | 有无嵌套循环 |\n| 二级 vs 三级 | 有无数组/字符串操作 |\n| 三级 vs 四级 | 有无递推/排序/二维数组/结构体 |\n| 四级 vs 五级 | 有无二分/贪心/递归/链表 |\n| 五级 vs 六级 | 有无DFS/BFS/DP/树/栈/队列 |\n| 六级 vs 七级 | 有无复杂DP/图遍历/哈希表 |\n| 七级 vs 八级 | 有无MST/最短路/倍增 |\n\n### 3.4 定级示例\n\n| 题特征 | 最高算法 | 数据结构 | 数据结构下限 | 最终级别 |\n|-------|:-------:|:-------:|:----------:|:-------:|\n| A+B | 无 | 基本类型 | 一级 | **一级** |\n| 判断闰年，多分支 | 无 | 基本类型 | 一级 | **一级** |\n| 求1到N和，单层循环 | 无 | 基本类型 | 一级 | **一级** |\n| 打印九九表，嵌套循环 | 无 | 基本类型 | 一级 | **一级**（无数组） |\n| 数组最大值 | 无 | 一维数组 | 三级 | **三级** |\n| 字符串反转 | 无 | 字符串 | 三级 | **三级** |\n| 暴力枚举两数之和 | 枚举（三级） | 一维数组 | 三级 | **三级** |\n| 模拟井字棋 | 模拟（三级） | 二维数组 | 四级 | **四级** |\n| 雷域统计（二维数组遍历） | 无特定算法 | 二维数组 | 四级 | **四级** |\n| 结构体排序 | 排序（四级） | 结构体 | 四级 | **四级** |\n| 二分查找 | 二分（五级） | 一维数组 | 三级 | **五级**（算法>数据结构） |\n| 走迷宫DFS | DFS（六级） | 二维数组 | 四级 | **六级**（算法>数据结构） |\n| Dijkstra最短路 | 最短路（八级） | 图 | 七级 | **八级**（算法>数据结构） |\n\n---\n\n## 第四步：检查清单（必做）\n\n### 4.1 自查清单\n\n完成定级后，逐项检查：\n\n- [ ] **2.1 核心知识**：题目知识点覆盖哪一级核心知识？\n- [ ] **2.2 算法识别**：最高级算法查表后对应哪一级？\n- [ ] **2.3 数据结构下限**：所用数据结构设定了什么下限？\n- [ ] **3.1 综合判定**：取 max(算法级别, 数据结构下限) 后结果为何？\n- [ ] **数学不计级**：是否错误地将数学知识计入等级？\n- [ ] **边界情况**：是否处于等级边界？仔细判断。\n- [ ] **常见误判**：是否犯了常见误判中的错误？\n\n### 4.2 常见误判速查\n\n| 误判 | 正确 | 原因 |\n|------|------|------|\n| 求1到N和 → 一级 | **一级** ✅ | 单层循环，无数组，一级正确 |\n| 数组求最大最小值 → 二级 | **三级** | 一维数组是三级知识，数据结构下限三级 |\n| 二维数组遍历 → 三级 | **四级** | 二维数组是四级知识，数据结构下限四级 |\n| 结构体排序 → 三级 | **四级** | 结构体+排序均属四级 |\n| 二分查找+数组 → 三级 | **五级** | 算法优先：二分查找是五级 |\n| 递推+一维数组 → 三级 | **四级** | 算法优先：递推是四级 |\n| DFS走迷宫 → 四级 | **六级** | 算法优先：DFS是六级 |\n| 并查集 → 三级 | **七级** | 并查集是七级图算法 |\n| Dijkstra → 七级 | **八级** | 最短路是八级 |\n\n### 4.3 复核流程\n\n```\n1. 识别题目的核心知识 → 查 2.1 节初步定位\n2. 识别题目的最高级算法 → 查 2.2 节得算法级别\n3. 识别题目的最高级数据结构 → 查 2.3 节得数据结构下限\n4. 取 max(算法级别, 数据结构下限) → 初步定级\n5. 检查是否有\"数学不计级\"或\"模板可降级\"情况\n6. 对照 3.4 节示例和 4.2 节常见误判确认\n7. 输出最终定级\n```\n\n---\n\n## 第五步：定难（思维复杂度）\n\n**独立于GESP级别**：一级题可甚难（复杂嵌套），八级题可甚简（直套模板）。\n\n> ⚠️ **星级仅供内部定分参考，不写入题面。** 题面（problem_zh.md）难度标注直接采用第六步算出的 CF 分数（score），格式 `难度（CF Rating）：**XXXX**`，与 `problem.yaml` 的 `score` 一致。\n\n### 难度等级（五星制）\n\n| 星级 | 特征 | 举例 |\n|:----:|------|------|\n| ⭐ | 直套公式/模板，一步到位 | 直分支判断、数组逆序、简公式 |\n| ⭐⭐ | 需简变形或组合2知识点 | 结构体排序、多条件筛选 |\n| ⭐⭐⭐ | 需算法综合或思维转化 | DP态设计、图遍历变体 |\n| ⭐⭐⭐⭐ | 复杂优化、数据结构结合 | 线段树优化、复杂图论 |\n| ⭐⭐⭐⭐⭐ | 高难竞赛题 | 高级算法组合 |\n\n### 定难规则\n\n1. **看拐点**：需\"想一步\"否，而非\"直做\"？\n2. **看组合**：需组多不相关知识点否？\n3. **看边界**：正理边界需特殊思维否？\n4. **看数据**：需算法效率上动脑否？\n\n---\n\n## 第六步：定分（CF Rating 估算）\n\n**目标**：为题目估算 Codeforces Rating（800~3500），写入 `problem.yaml` 的 `score` 字段，并作为题面（problem_zh.md）的难度标注（`难度（CF Rating）：XXXX`）。\n\n> ⚠️ **评分按难度，不按 GESP 知识点等级**：\n> - GESP 等级（第三步）只用于**知识点分类**（写入 tag 的 `GESP X级`），**不参与定分**。\n> - 定分主轴是第五步的**难度星级**（思维量、实现复杂度），辅以算法门槛与数据规模修正。\n> - 同一知识点的题，难度可天差地别：\"二维数组初始化输出\"≈800，\"二维数组高级应用\"可达 1400+。定分只认难度，不认知识点层级。\n\n### 6.1 难度基分表（星级 → 基准 Rating）★ 主表\n\n以第五步「定难」的星级为唯一基分来源：\n\n| 难度星级 | 思维特征 | 基准分 | CF 参考 |\n|:--------:|:--------|:------:|---------|\n| ⭐ | 纯语法练习/直套模板/一步到位，零思维量（学生学完当节课就能做） | **800** | 语法题、固定输出题 |\n| ⭐⭐ | 需简变形或组合 2 个知识点，但一眼能看穿 | **1000** | 简单模拟/统计 |\n| ⭐⭐⭐ | 需算法综合或思维转化（关键一步要想） | **1300** | CF 189A (1300) |\n| ⭐⭐⭐⭐ | 复杂优化、数据结构结合、多步推理 | **1600** | CF 698A (1500~1600) |\n| ⭐⭐⭐⭐⭐ | 高难竞赛题（高级算法组合） | **2100** | CF 1132E (2100) |\n\n### 6.2 浮动修正\n\n#### 算法门槛修正（仅 ⭐ / ⭐⭐ 档适用）\n\n⭐/⭐⭐ 的题思维量低，但**算法本身的学习成本**也是难度的一部分（学生得先会这个算法才能套）。⭐⭐⭐ 及以上星级已含算法思维，不再叠加。\n\n| 题目所涉算法 | 修正值 |\n|:------------|:------:|\n| 无算法 / 模拟 / 枚举 / 基础数组 / 字符串 | ±0 |\n| 递推 / 排序 / 二分 / 贪心 | +150 |\n| DP / DFS / BFS / 栈队列 / 链表 | +300 |\n| 图论 / 复杂DP / 哈希 / 高级数据结构 | +400 |\n\n> 例：0/1 背包模板题 = ⭐⭐(1000) + DP(+300) = **1300**（对齐 CF 1446A）\n\n#### 数据规模修正\n\n| 规模特征 | 修正倾向 |\n|---------|---------|\n| 大 N（≥10^5），需效率思维 | +100 |\n| 无效率要求（小 N） | ±0 |\n| n≤20 需状压/暴搜（思维已计入星级） | 不叠加 |\n\n#### 实现复杂度修正\n\n| 特征 | 修正值 |\n|:----|:------:|\n| 长代码 / 多细节处理（边界、格式、字符串操作多） | +50~100 |\n| 极简代码（几行搞定） | ±0 |\n\n#### 已知 CF Rating（最高优先级）\n\n若题目来自 Codeforces 且已知 Rating：\n- **直接采用已知 Rating**，跳过估算\n- 例：CF Round 某题 Rating 1400 → `score: 1400`\n\n#### AtCoder → CF 难度换算\n\nAtCoder 题目难度分（题面所标 Difficulty）不可径用——须换算为 CF Rating 方可填入 `score`。\n\n| 优先级 | 方法 | 条件 |\n|:------:|------|------|\n| 最高 | Difficulty 分数换算 | 题面可见 AtCoder Difficulty 值 |\n| 次高 | 比赛位置估分 | 无 Difficulty 时，按比赛+题号估算 |\n| 最低 | 星级基分法（6.1） | 两者皆无，回退至星级估分 |\n\n##### 方法一：Difficulty 分数换算（优先）\n\nAtCoder 题面标有 Difficulty 值（如 `Difficulty: 1287`），按下表换算为 CF Rating。\n\n| AtCoder Difficulty | CF Rating 区间 | 取中值（快速参考） |\n|:------------------:|:--------------:|:------------------:|\n| 0~99 | 800 | 800 |\n| 100~399 | 800~900 | 850 |\n| 400~799 | 900~1100 | 1000 |\n| 800~1199 | 1100~1400 | 1250 |\n| 1200~1599 | 1400~1700 | 1550 |\n| 1600~1999 | 1700~2000 | 1850 |\n| 2000~2399 | 2000~2300 | 2150 |\n| 2400~2799 | 2300~2700 | 2500 |\n| 2800~3199 | 2700~3100 | 2900 |\n| 3200+ | 3100~3500 | 3300 |\n\n**换算公式**（同区间内插值用）：\n\n```\ndiff ≤ 100:  CF = 800\n100 < diff ≤ 400:  CF = 800 + (diff - 100) × 0.5\n400 < diff ≤ 1200: CF = 950 + (diff - 400) × 0.375\n1200 < diff ≤ 2000: CF = 1250 + (diff - 1200) × 0.75\n2000 < diff ≤ 2800: CF = 1850 + (diff - 2000) × 1.0\n2800 < diff: CF = 2650 + (diff - 2800) × 1.0, cap 3500\n```\n\n例：AtCoder Difficulty 1287\n→ 查表 1200~1599 区间 → CF 1400~1700\n→ 公式：1250 + (1287 - 1200) × 0.75 = 1250 + 65 = 1315 → 取整 1300\n\n##### 方法二：比赛位置估分（Difficulty 不可知时）\n\n| 比赛 | 题号 | CF 近似 |\n|:----:|:----:|:-------:|\n| ABC | A | 800~900 |\n| ABC | B | 900~1100 |\n| ABC | C | 1100~1300 |\n| ABC | D | 1300~1600 |\n| ABC | E | 1600~2000 |\n| ABC | F | 1900~2400 |\n| ABC | G（旧ARC） | 2200~2800 |\n| ARC | A(C) | 1600~2100 |\n| ARC | B(D) | 2000~2500 |\n| ARC | C(E) | 2400~2900 |\n| AGC | A | 2000~2800 |\n| AGC | B+ | 2800~3500 |\n\n**注意**：比赛位置法较粗糙，同一位置因场次不同可 ±200 偏差。有 Difficulty 值时务必用方法一。\n\n### 6.3 估分公式\n\n```\nscore = 星级基分(6.1) + 算法门槛修正(6.2) + 数据规模修正(6.2) + 实现复杂度修正(6.2)\n```\n\n- 结果须落在 800~3500 区间\n- 取整至 50 的倍数（如 800、1000、1150、1300、1450、1700）\n- **GESP 等级不参与公式**（仅作 tag 知识点分类）\n\n### 6.4 示例\n\n| 题特征 | 星级 | 算法门槛 | 估算 process | score |\n|-------|:----:|:--------:|-------------|:-----:|\n| A+B，无分支 | ⭐ | 无 | 800 | 800 |\n| 二维数组初始化输出（无输入） | ⭐ | 无 | 800 | 800 |\n| 打印九九表，嵌套循环 | ⭐ | 无 | 800 | 800 |\n| 一维数组统计，单循环 | ⭐⭐ | 无 | 1000 | 1000 |\n| 字符串反转 | ⭐⭐ | 无 | 1000 | 1000 |\n| 二分查找 + 数组 | ⭐⭐ | 二分 +150 | 1000 + 150 | 1150 |\n| **0/1 背包模板（采药）** | **⭐⭐** | **DP +300** | **1000 + 300** | **1300** |\n| **完全背包 + 最小化（零钱兑换）** | **⭐⭐⭐** | 星级已含 | 1300 | 1300 |\n| **完全背包 + 方案数（零钱兑换II）** | **⭐⭐⭐** | 星级已含 | 1300 | 1300 |\n| **树形 DP + 数据 2e5** | **⭐⭐⭐⭐** | 星级已含 | 1600 | 1600 |\n| Dijkstra 求最短路（模板） | ⭐⭐ | 图论 +400 | 1000 + 400 | 1400 |\n| Dijkstra 应用（多步变形） | ⭐⭐⭐⭐ | 星级已含 | 1600 | 1600 |\n| **逆向背包（硬币面值还原）** | **⭐⭐⭐⭐** | 星级已含 | 1600 | 1600 |\n| CF Round 已知 1600 | - | - | 直接采用 | 1600 |\n\n### 6.5 自检\n\n- [ ] `score` 在 800~3500 区间？\n- [ ] 定分以**难度星级**为主轴，未按 GESP 知识点等级映射？\n- [ ] ⭐/⭐⭐ 档题：算法门槛修正已应用？\n- [ ] 已知 CF Rating 者直接采用了？\n- [ ] AT/CF 比赛题标记了来源以便日后对照？\n\n---\n\n## 大纲要点（2026版）\n\n1. **数组限制**：三级/四级数组不含变长数组（vector）\n2. **函数限制**：四级函数不含Lambda/运算符重载\n3. **C++标准**：以C++11为准\n4. **复杂度**：需分析时间/空间复杂度\n\n## 下一步\n\n成 → `04-problem.md`\n\nFile v2.6.0:steps/04-problem.md\n\n# Step 4: 生题面\n\n## 目标\n\n生中文题面 `{WORK_DIR}/problem_zh.md`。\n\n## 铁律：仅译不编\n\n1. 仅译，保原构\n2. 禁 AI 内心戏：禁分析、推理、计算过程\n3. ❌ **禁解题思路/解法分析/题解**：题面只含描述、输入输出格式、样例、数据范围，不附任何解题指引或算法讲解\n4. 样例释：仅译原题释\n5. **禁改样例**：样例输入/输出必原封不动复，不增删改任一字\n6. **图片链处理**：题面中图片链接区分配图来源：\n   - **互联网链**（`http://` / `https://` 起）：原样保留，不删不替\n   - **本地图/附件**（PDF 提取、用户本地文件等）：拷贝至 `{WORK_DIR}/additional_file/`，题面中引用改为 `![](file://文件名)`，禁用 `images/` 目录\n7. **留示意**：题面原有示意图、表格、公式等必完整留\n\n## 标题格式\n\n`中文标题(英文原标题)`\n\n例：\n- `移除前导o(Trimo)`\n- `传感器数据记录(Sensor Data Logging)`\n\n## 题面格式\n\n```markdown\n<div class=\"water\">\n\n# 中文标题(英文原标题)\n\n#### 题目描述\n[中文翻译]\n\n#### 输入格式\n...\n\n#### 输出格式\n...\n\n#### 样例输入 #1\n...\n\n#### 样例输出 #1\n...\n\n#### 数据范围\n...\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP X级**，难度（CF Rating）：**XXXX**。\n\n> ⚠️ **GESP X 级 和 CF 分数 不得凭印象填！**\n> 必先读 **`03-gesp.md`**，以第三步「定级」结果填 X（知识点分类），以第六步「定分」结果（score）填 CF 分数。\n> **CF 分数按难度评定（第六步），与 GESP 等级无关**——同知识点可出 800 的语法题，也可出 1400+ 的应用题。\n> 二者均自 03-gesp.md 来，非 AI 自由发挥。CF 分数须与 `problem.yaml` 的 `score` 字段一致。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> ⚠️ **占位用，生测试数据后按实际分组更新说明列。**\n\n</div>\n```\n\n## 更名工作目录（要务！）\n\n生题面后，**将标题加入工作目录名**，增辨识：\n\n```bash\n# 定标题简写：\n# - 英文标题：取全标题，空格→下划线，转小写\n# - 中文标题：取前 4~8 字\n# 例：标题为\"移除前导o(Trimo)\" → 简写为\"移除前导o_Trimo\"\n#      标题为\"Sensor Data Logging\" → 简写为\"sensor_data_logging\"\n\nmv {WORK_DIR} {WORK_DIR}_{标题简写}\n# {WORK_DIR} = {WORK_DIR}_{标题简写}\n```\n\n> **注**：若 PID 为 null（原创题），径用标题简写：\n> ```bash\n> BASE_DIR=$(detect_desktop)\n> mv $BASE_DIR/work $BASE_DIR/work_{标题简写}\n> # {WORK_DIR} = $BASE_DIR/work_{标题简写}\n> ```\n\n## 下一步\n\n成 → `05-config.md`\n\nFile v2.6.0:steps/05-config.md\n\n# Step 5: 写配置\n\n## 目标\n\n写入 `{WORK_DIR}/problem.yaml`。\n\n## pid 命名\n\n```\n用户指定 > 比赛自命名 > null\n```\n\n### 比赛自命名\n\n格式：`{比赛简称}{场次}{题号}`\n\n| 来源 | 例 |\n|------|------|\n| AtCoder ABC | `abc453a` |\n| AtCoder ARC | `arc123a` |\n| Codeforces | `cf789a` |\n| LeetCode | `lc1234` |\n| Luogu | `lgP1001` |\n\n### 无比赛信息\n\n单题搬运且无定来源：`pid: \"null\"`\n\n## 配置格式\n\n```yaml\npid: \"abc453a\"\ntitle: \"移除前导o(Trimo)\"\nscore:  # AI 按 03-gesp.md「第六步：定分」规则估算\ntag:\n  - \"字符串\"\n  - \"模拟\"\n  - \"GESP 1级\"\n```\n\n## 注\n\n1. pid 按规而判，非无脑填 null\n2. title 必用 `中文(英文)` 格式\n3. **score 分数必填（AI 动态估算）**：\n   - 范围 800~3500（与 Codeforces Rating 对齐）\n   - 按 **03-gesp.md「第六步：定分」** 规则估算——**以难度星级为主轴，不按 GESP 等级映射**\n   - 比赛中已知分数直接采用（如 CF 的 Rating）\n   - **禁写死默认值**，必须逐题分析后填入\n4. **tag 必含多项**：\n   - 1~3 个**知识点标签**（如\"字符串\"\"动态规划\"\"图论\"\"贪心\"\"模拟\"\"前缀和\"等，贵精不贵多）\n   - 1 个**等级标签**（`GESP X级`，注意 X 与数字间有空格）\n   - **禁**只写一个等级标签完事\n\n5. **等级标签必读 03-gesp.md 后填写**：\n   - ⚠️ 先读 **`03-gesp.md` → 第二步「算法分类详表」**，对照题目算法确定 GESP 等级\n   - ⚠️ 再读 **`03-gesp.md` → 第六步「定分」** 估算 score\n   - **禁凭印象填等级**，背包 DP ≠ 四级递推（背包 ∈ 六级）\n   - `tag` 中的 `GESP X级` 与 `score` 的估算，二者均以 03-gesp.md 为准，缺一不可\n\n## 测试数据分组配置\n\n测试数据之分组（HydroOJ subtask）在 `{WORK_DIR}/testdata/config.yaml` 中配，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 测试数据分组配置\n\n测试数据的分组（HydroOJ subtask）在 `testdata/config.yaml` 中配置，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 下一步\n\n成 → `06-std.md`\n\nFile v2.6.0:steps/06-std.md\n\n# Step 6: 实现标程\n\n## 目标\n\n写标准解题程序 `{WORK_DIR}/std.cpp`。\n\n## 模板\n\n```cpp\n#include <iostream>\n#include <vector>\n#include <map>\n#include <cmath>\n#include <set>\n#include <queue>\n#include <stack>\n#include <list>\n#include <tuple>\n#include <unordered_map>\n#include <algorithm>\n#include <climits>\n#include <tuple>\n#define endl '\\n'\n#define int long long\n#define pii pair<int, int>\nusing namespace std;\nconst int inf = 0x3f3f3f3f3f3f3f3f;\nconst int mod = 998244353;\nconst int mxn = 3e6 + 5;\n\nint n,a[114514];\nint c=0;\nsigned main()\n{\n    cin>>n;\n    for(int i=0;i<n;++i) cin>>a[i];\n    for(int i=0;i<n-2;++i)\n    {\n        c+=(a[i]<a[i+1] and a[i+1]>a[i+2]);\n    }\n    cout<<c<<endl;\n    return 0;\n}\n\n```\n\n## 要点\n\n1. 据题定算法\n2. OI 风格：**左大括号单独起一行**，**全局变量**，简变量名（如 `w`, `v`, `dp`, `n`, `m`）\n3. `#include <bits/stdc++.h>` 尽量少用，优先逐一声明所需头文件\n4. **STL 容器（vector / map / set 等）尽量少用**——优先用全局数组（`int dp[105][105]` 而非 `vector<vector<int>>`），确有必要时可用\n5. ⚠️ **禁 `memcpy` / `memset`**——数组拷贝用 `vector` 赋值（`auto prev = dp`），初始化用 `fill`\n6. ⚠️ **禁动态内存分配**——`new`/`malloc`/`vector.resize()` 均不可\n7. ⚠️ **字符串用 `std::string`，禁用 `char[]`**——读入用 `cin >> s` 或 `getline`，输出用 `s.c_str()`（如需）\n   - ❌ `char s[105]; scanf(\"%s\", s);`\n   - ✅ `string s; cin >> s;`\n8. ⚠️ **不引入 `<cstring>` / `<string.h>`**——禁 `char[]`、`memcpy`、`memset`。初始化用 `fill`，拷贝用赋值\n9. 时复杂度满足时限\n\n## ⚠️ 铁律：写后即验（生数据前）\n\n写完 std.cpp **必即**用题面样例验之，不跳：\n\n```bash\ncd {WORK_DIR}\ng++ std.cpp -o std -std=c++17\n\n# 逐样例输入验输出，一一对照题面\necho \"【样例输入1】\" | ./std\n# 核出与题面样例输出1一致否\n\necho \"【样例输入2】\" | ./std\n# 核出与题面样例输出2一致否\n\n# ... 诸样例逐一验\n```\n\n**禁**：\n- ❌ 写 std 不验样例即写 mkin.h / 生数据\n- ❌ 只验一样例即谓全对\n- ❌ 样例未过仍续生数据\n\n**必**：\n- ✅ 诸题面样例全过方可入下步\n- ✅ 样例不过则改 std.cpp，重验，至全过\n\n## 下一步\n\n诸样例过 → `07-testdata.md`\n\nArchive v2.5.5: 26 files, 43947 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1807b), question/problem.yaml (164b), question/std.cpp (619b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2215b), SKILL.md (5204b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (16055b), steps/04-problem.md (2724b), steps/05-config.md (2108b), steps/06-std.md (2363b), steps/07-testdata.md (8021b), steps/08-audit.md (5151b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5044b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1842b), steps/contest/03-move.md (3830b), _meta.json (127b)\n\nFile v2.5.5:SKILL.md\n\n---\nname: 搬题姬\nversion: 2.5.5\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写 GESP 等级：必含 1~3 个知识点标签 + 1 个等级标签，禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOID 写完 std 不验样例：所有样例输入逐一喂入，输出须与题面完全一致，全过方可进入数据生成**\n- ⚠️ **AVOID 修改样例：样例输入/输出必原样复制，禁增删改任何字符**\n- ⚠️ **AVOID 删除图片链接：题面中 `![](url)`、`<img>` 标签等所有图片语法必原样保留**\n- ⚠️ **AVOID 删除示意图：题面原有示意图、表格、公式必完整保留**\n- ⚠️ **生成测试点时 AVOID 生成 problem_zh.md、problem.yaml**\n- ⚠️ **生成测试点时 AVOID 全局打包（09-package.md 之整个工作目录 zip），只打包 testdata/ 下文件**\n- ⚠️ **生成测试点时 AVOID 跳过 std.cpp：无标程则 .out 不出**\n- ⚠️ **生成测试点时 AVOID 只写样例数据：25 组全覆盖（含 Hack）**\n- ⚠️ **生成测试点时 AVOID 交付前不验证：必查 .in 格式、.out 与样例一致、文件成对存在**\n\n---\n\n## 入口\n\n读 steps/00-detect-url.md\n\nFile v2.5.5:_meta.json\n\n{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"2.5.5\",\n  \"publishedAt\": 1786203421247\n}\n\nFile v2.5.5:references/testdata-design.md\n\n# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| C1 | 无解情况 | 输出 -1, Impossible |\n| C2 | 唯一解 | 仅一种构造方案 |\n| C3 | 多解任意 | 任输一合法解即可 |\n\n---\n\n## 三、Hack 数据设计\n\n| 常见错误 | Hack 数据特征 | 代码示例 |\n|---------|--------------|---------|\n| **int 溢出** | 用近 2³¹-1 或 2⁶³-1 大数 | `fout << \"2147483647 2147483647\"` |\n| **边界漏判** | N=1, N=max, a[i]=0 | `fout << \"1\\n0\"` |\n| **精度误差** | 需 double 非 float，或浮点比较 | `fout << \"0.1 0.2\"`（=0.3?） |\n| **超时** | 迫 O(n²) 算法超限 | N=200000 逆序 |\n| **错误贪心** | 使贪心策略得非优解 | 经典反例数据 |\n| **负数取模** | C++ `-5 % 3` = -2（非 1） | 含负数的模运算 |\n| **未开 long long** | 两 int 相乘超 2³¹-1 | `fout << \"50000 50000\"` |\n| **数组越界** | n 上限 + 特殊访问 | n=100000 边界访问 |\n| **字符串结束符** | 含空格、换行 | `fout << \"abc def\"` |\n| **多测不清空** | 多组测试用例（T≥2） | T=2 且共用数据结构 |\n\n---\n\n## 四、各规模数据生成建议\n\n### 小规模（case 3-8）\n\n| 用例 | N 范围 | 目的 |\n|:----:|:------:|------|\n| 3-4 | [1, 5] | 最小合法输入 |\n| 5 | [5, 10] | 稍复杂 |\n| 6 | 特定构造 | 特殊性质 1（如单调递增） |\n| 7 | 特定构造 | 特殊性质 2（如全相同） |\n| 8 | 特定构造 | 特殊性质 3（据题定制） |\n\n### Hack 数据（case 9-11）\n\n每例针对一类常见错误。宁小勿大——越简单越方便定位错因。\n\n### 中规模（case 12-15）\n\nN 在 [100, 10000] 范围随机，可混入部分边界特征。\n\n### 大规模（case 16-20）\n\n| 用例 | N | 目的 |\n|:----:|:-:|------|\n| 16-17 | 上限 80% | 接近极限 |\n| 18 | 上限 100% | 极限压力 |\n| 19 | 上限 + 特殊构造 | 极限 + Hack |\n| 20 | 上限 + 全相同/全逆序 | 极限 + 退化 |\n\n### 随机回归（case 21-25）\n\nN 在 [1, 上限] 之间随意随机，类型混合，覆盖意外路径。\n\n---\n\n## 五、config.yaml 格式\n\n```yaml\ntype: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out\n```\n\n**注：**\n- 若 OJ 支持自动识别（文件名 1.in~25.in），可省 `subtasks` 只写顶层 `time`/`memory`\n- 用 `subtasks` 时必显式列出所有 `cases`\n- 顶层 `time`/`memory` 为全局默认，可被子任务覆盖\n- `subtasks[].id` 从 0 开始编\n\n---\n\n## 六、测试点分布表格式\n\n生数据后，**必**于 `problem_zh.md` 末（`</div>` 前）追加以下表格。此为硬性要求，两流程（常搬题/仅生测试点）皆同。\n\n### 示例\n\n```markdown\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |\n```\n\n### 各列规则\n\n| 列 | 规则 |\n|----|------|\n| Subtask | 对应 config.yaml 中 subtask.id |\n| 分值 | 该 subtask 的 score |\n| 测试点编号 | 该 subtask 覆盖的 case 编号范围（如 `1~2`、`3~8`） |\n| 说明 | 描述每组之规模与数据特征 |\n\n### 说明列撰写规范\n\n| 写法 | 说明 |\n|------|------|\n| `样例` | 样例数据 |\n| `小规模 N≤10` | 小规模随机，N 最大 10 |\n| `特殊: 全同值` | 所有值相等 |\n| `特殊: 严格递增` | 严格递增序列 |\n| `Hack: N=1边界` | Hack 边界漏判 |\n| `Hack: 大数值溢出` | Hack int 溢出 |\n| `中规模 N≈100~10000` | 中等规模 |\n| `大规模 N≈2e5~1e6 压力` | 大规模压力 |\n| `随机 N=1~1e6 回归` | 回归测试 |\n\n### 约束\n\n- ✅ 可写规模范围（N≤10、N≈1e5 等）\n- ✅ 可写构造类型（全同值、单调、链、菊花图等）\n- ❌ 禁写答案（ans=xx、输出 Yes/No 等）\n- ❌ 禁写具体计算值（d=99991、S=1e9 等）\n- ❌ 禁逐 case 列表（只按 subtask 分组）\n\nFile v2.5.5:question/problem_zh.md\n\n<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度（CF Rating）：**1200**。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> 生测试数据后，按实际 subtask 分组改写上表。\n\n</div>\n\nFile v2.5.5:skill-card.md\n\n## Description:\n\n从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fslong520](https://clawhub.ai/user/fslong520)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and competitive programming educators use this skill to import OJ problems from URLs, files, or text into standardized problem packages with statements, standard solutions, test data, and HydroOJ-style configuration. It can also generate only test data when a complete problem statement is already supplied.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow may create and delete Desktop work folders.\n\nMitigation: Review the exact workspace paths before execution and prefer a disposable workspace or container.\n\nRisk: The workflow may compile and run generated C++ locally.\n\nMitigation: Sandbox execution, especially when problem sources or generated code are untrusted.\n\nRisk: The workflow may browse OJ pages and read user-supplied local problem files.\n\nMitigation: Use trusted sources where possible and inspect imported content before packaging or running generated artifacts.\n\n## Reference(s):\n\n- [Test Data Design Reference](artifact/references/testdata-design.md)\n- [ClawHub Skill Release](https://clawhub.ai/fslong520/skills/ojimport)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with generated problem files, C++ source, YAML configuration, shell commands, and ZIP archives]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces either a complete standardized OJ problem package or a testdata.zip package, depending on the requested workflow.]\n\n## Skill Version(s):\n\n2.5.5 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.5.5:steps/00-detect-url.md\n\n# Step 0: 辨输入类\n\n## 目标\n\n辨输入为 URL、文件路径或直文本，单题或赛题。\n\n## ⚠️ 比赛搬运铁律\n\n若测得为比赛 URL（如 `/contests/abc454`）：\n\n1. **必先读 steps/contest/01-list.md** 创题面汇总文件\n2. **必逐题译之追加写入汇总文件**\n3. **禁跳过汇总文件直逐题搬运**\n4. **禁自对话上下文记忆题面**\n\n## 输入类型\n\n| 类型 | 判断条件 |\n|------|---------|\n| URL | 以 `http://` 或 `https://` 起 |\n| 文件路径 | 以 `/` 或 `./` 或 `~/` 起 |\n| 直文本 | 非URL亦非文件路径 |\n\n## URL 跳转\n\n| URL 特征 | 下一步 |\n|---------|--------|\n| 尾为 `/tasks` 或 `/problems` | `contest/01-list.md` |\n| 其他 | `02-get-info.md` |\n\n## 文件/文本跳转\n\n| 内容特征 | 下一步 |\n|---------|--------|\n| 多道题（多个 `---` 或多题号） | `contest/03-move.md` |\n| 单道题 | `01-init.md` → `02-get-info.md` |\n\n## 多题判法\n\n```python\ndef is_multi_problem(content):\n    if content.count(\"---\") >= 2:\n        return True\n    markers = [\"## A -\", \"## B -\", \"## C -\", \"## D -\", \"## E -\"]\n    if sum(1 for m in markers if m in content) >= 2:\n        return True\n    return False\n```\n\nFile v2.5.5:steps/01-init.md\n\n# Step 1: 环境初始化\n\n## 目标\n\n自模板目录复文件至带题目标识之工作目录。\n\n## 基路径\n\n### 桌面路径检测（跨平台）\n\n先检测用户桌面路径，后续所有工作目录创建于桌面。\n\n```bash\n# 自动检测桌面路径（支持 Linux / macOS / Windows）\n# 检测到路径后确保目录存在，不存在则创建\ndetect_desktop() {\n    local d=\"\"\n    # Linux: ~/.config/user-dirs.dirs 中有 XDG_DESKTOP_DIR\n    if [ -f \"$HOME/.config/user-dirs.dirs\" ]; then\n        . \"$HOME/.config/user-dirs.dirs\"\n        if [ -n \"$XDG_DESKTOP_DIR\" ] && [ -d \"$XDG_DESKTOP_DIR\" ]; then\n            echo \"$XDG_DESKTOP_DIR\"\n            return\n        fi\n    fi\n    # macOS: ~/Desktop\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 中文: ~/桌面\n    d=\"$HOME/桌面\";   [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 西班牙语: ~/Escritorio\n    d=\"$HOME/Escritorio\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Windows Git Bash / WSL: ~/Desktop (再试一次)\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # 兜底：使用 ~/Desktop，不存在则创建\n    mkdir -p \"$HOME/Desktop\"\n    echo \"$HOME/Desktop\"\n}\n```\n\n## 工作目录命名\n\n**格式：** `{BASE_DIR}/work_{PID}_{标题简写}`\n\n| 阶段 | 目录名 | 说明 |\n|------|--------|------|\n| 初始化时 | `{BASE_DIR}/work` 或 `{BASE_DIR}/work_{PID}` | PID已知则径用，未知暂用 `work` |\n| 得PID后（step 2） | `{BASE_DIR}/work_{PID}` | 自URL取PID后更名 |\n| 定标题后（step 4） | `{BASE_DIR}/work_{PID}_{标题简写}` | 生题面后加标题简写 |\n\n**标题简写规则：**\n- 英文标题：取完整标题，空格易下划线，转小写（如 `Trimo` → `trimo`）\n- 中文标题：取前 4~8 字（如 `移除前导o` → `移除前导o`）\n- 标题过长则截取前 20 字符\n\n> **工作目录变量**：后诸步骤中，以 `{WORK_DIR}` 指 `{BASE_DIR}/work_{PID}_{标题简写}`。\n> AI 当于上下文中记 `{WORK_DIR}` 之值，所有文件操作皆基于此目录。\n\n## 命令\n\n### 其一：PID 已知（自 URL 或上下文可定）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work_{PID} 2>/dev/null\ncp -r question $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 其二：PID 未知（首初始化）\n\n```bash\nBASE_DIR=$(detect_desktop)\nrm -rf $BASE_DIR/work 2>/dev/null\ncp -r question $BASE_DIR/work\n# {WORK_DIR} = $BASE_DIR/work（后得信息后更名）\n```\n\n## 模板位置\n\n1. `$BASE_DIR/question/` — 若用户预置模板于桌面\n2. `SKILL.md 所在目录/question/` — 技能自带模板\n3. `当前工作目录/question/` — 兜底\n\n## 模板文件\n\n| 文件 | 用途 |\n|------|------|\n| `std.cpp` | 标程模板 |\n| `mkdata.cpp` | 数据生成器模板 |\n| `mkin.h` | 测试数据逻辑模板 |\n| `problem.yaml` | 配置文件模板 |\n\n## 后续路径\n\n后诸步骤引文件时用 `{WORK_DIR}/xxx` 而非 `work/xxx`。\nAI 当记 `{WORK_DIR}` 之值，下步一致。\n\n## 下一步\n\n成 → `02-get-info.md`\n\n败 → 查模板目录存否\n\nFile v2.5.5:steps/02-get-info.md\n\n# Step 2: 获取题目信息\n\n## 目标\n\n根据输入来源获取题目信息（PID、标题、题面内容）。\n\n## 浏览器工具优先级\n\n```\n1. urlgo（优先）\n2. BrowserUse（urlgo 不可用）\n3. WebFetch（以上都不可用，仅公开页面）\n```\n\n## 来源类型\n\n| 类型 | 处理 |\n|------|------|\n| URL | urlgo 访问 → snapshot → 解析 |\n| 题号 | 直接匹配 PID 格式 |\n| 文件 | 解析文件提取题目信息 |\n| 文本 | 解析用户给出的文本 |\n\n## PID 提取\n\n| 平台 | URL 格式 | PID 规则 |\n|------|---------|---------|\n| AtCoder | `/contests/abc451/tasks/abc451_a` | `abc451a` |\n| Codeforces | `/contest/71/problem/A` | `cf71a` |\n| LeetCode | `/problems/two-sum` | `lc1` |\n| Luogu | `/problem/P1001` | `p1001` |\n\n无法提取时 PID 填 `null`。\n\n## 重命名工作目录（关键！）\n\n提取到 PID 后，**立即重命名工作目录**，使其包含题目标识：\n\n### 如果当前目录是 `work`（即初始化时PID未知）：\n\n```bash\nBASE_DIR=$(detect_desktop)\nmv $BASE_DIR/work $BASE_DIR/work_{PID}\n# {WORK_DIR} = $BASE_DIR/work_{PID}\n```\n\n### 如果当前目录已经是 `work_{PID}`（即初始化时已用PID）：\n\n无需操作，`{WORK_DIR}` 保持不变。\n\n### 如果 PID 为 null（无法提取）：\n\n保持 `{WORK_DIR}` 不变，后续步骤确定名称后再处理。\n\n## 下一步\n\n成功 → `03-gesp.md`\n\n失败 → 询问用户其他来源\n\nFile v2.5.5:steps/03-gesp.md\n\n# Step 3: GESP 知识点等级判定\n\n## 目标\n\n定题目知识点等级（GESP 1-8级）与难度等级（二者独立评估）。\n\n## 原则\n\n知识点等级 ≠ 题目难度。同知识点可出简题，亦可出难题。\n\n**先定级，后定难**：先按所涉知识点定GESP级别，后独立评估题目难度。\n\n---\n\n## 第一步：前置分析（必做）\n\n在判定等级前，先提取题目特征：\n\n### 1.1 输入输出特征\n\n| 特征 | 信息 | 提示 |\n|------|------|------|\n| 输入规模 | N 的最大值 | 判断算法复杂度要求 |\n| 输出类型 | 单值/序列/构造 | 影响解法选择 |\n| 多组数据 | T 的存在 | 可能涉及预处理 |\n\n### 1.2 数据范围速判\n\n| N 的范围 | 允许复杂度 | 常用算法 |\n|----------|-----------|---------|\n| N ≤ 20 | O(2^N) | 暴力枚举、位运算 |\n| N ≤ 1000 | O(N^2) | 暴力DP、简单图论 |\n| N ≤ 10^5 | O(N log N) | 二分、排序、线段树 |\n| N ≤ 10^6 | O(N) | 贪心、前缀和、并查集 |\n| N ≤ 10^9 | O(log N) 或 O(1) | 数学公式、矩阵快速幂 |\n\n### 1.3 空间限制\n\n| 限制 | 提示 |\n|------|------|\n| 256MB | 可开二维数组 |\n| 64MB | 注意空间优化 |\n| 16MB | 需滚动数组/压缩 |\n\n---\n\n## 第二步：大纲知识点识别\n\n依据 CCF GESP 官方大纲（2026版）将题目所涉知识点归入对应级别。\n\n### 2.1 核心知识总览\n\n| 级别 | 核心知识 | 定级提示 |\n|:----:|---------|---------|\n| 一级 | 变量、基本数据类型、顺序/分支/循环、基本运算、输入输出 | 无数组、无嵌套循环，仅有基础语法 |\n| 二级 | 存储与网络、流程图、ASCII编码、数据类型转换、**多层分支/循环嵌套**、数学函数 | 有嵌套循环，但无数组/字符串操作 |\n| 三级 | 数据编码、进制转换、位运算、算法描述、**一维数组、字符串、枚举法、模拟法** | 用到一维数组或字符串，或枚举/模拟算法 |\n| 四级 | **指针、结构体、二维/多维数组、函数、递推算法、排序算法（冒泡/插入/选择）、文件操作、异常处理** | 用到二维数组/结构体/指针，或递推/排序算法 |\n| 五级 | **初等数论、高精度运算、链表、二分查找/答案、递归、贪心、分治**（归并/快排） | 用到二分/贪心/递归/分治/数论/链表 |\n| 六级 | **树、哈夫曼树、二叉排序树、DFS/BFS、简单动态规划、面向对象、栈与队列** | 用到树/图遍历/DFS/BFS/简单DP/栈/队列 |\n| 七级 | 数学库函数、**复杂动态规划**（LIS/LCS/区间DP）、**图的定义与遍历、图论算法、哈希表** | 用到复杂DP、图论、哈希表 |\n| 八级 | 计数原理、排列组合、杨辉三角、**倍增法、图论算法综合**（MST/最短路）、算法优化 | 用到MST/最短路/倍增/组合数学/算法优化 |\n\n### 2.2 核心算法递进\n\n此表来自大纲附录。**判定时以题目所涉最高级算法为准。**\n\n| 级别 | 核心算法 |\n|:----:|---------|\n| 一级 | 无特定算法，基础编程 |\n| 二级 | 无特定算法，综合编程 |\n| 三级 | 枚举法、模拟法 |\n| 四级 | 递推算法、冒泡排序、插入排序、选择排序 |\n| 五级 | 二分查找/二分答案、递归、贪心算法、分治（归并排序、快速排序） |\n| 六级 | 深度优先搜索（DFS）、宽度优先搜索（BFS）、简单动态规划 |\n| 七级 | 复杂动态规划（LIS、LCS、区间DP）、图遍历算法 |\n| 八级 | 最小生成树、最短路径、算法优化 |\n\n### 2.3 核心数据结构递进\n\n此表来自大纲附录。**若题目使用某级数据结构，其定级不可低于该级。**\n\n| 级别 | 核心数据结构 | 说明 |\n|:----:|-------------|------|\n| 一级 | 基本数据类型（int、long long、float、double、char、bool） | 无复合结构 |\n| 二级 | 无新增 | 仅有基本类型 |\n| 三级 | **一维数组、字符串** | 用一维数组/字符串解题→下限三级 |\n| 四级 | **二维/多维数组、结构体、指针** | 用二维数组/结构体/指针→下限四级 |\n| 五级 | 链表（单链表、双链表、循环链表） | 用链表→下限五级 |\n| 六级 | 栈、队列、循环队列、树、二叉树 | 用栈/队列/树→下限六级 |\n| 七级 | 图（有向图、无向图）、哈希表 | 用图/哈希表→下限七级 |\n| 八级 | 无新增（综合应用） | 综合运用已有知识 |\n\n---\n\n## 第三步：定级（综合判定）\n\n### 3.1 核心规则\n\n1. **算法优先**：以最高级别算法为准定级（查 2.2 节）\n2. **数据结构设下限**：题目所需数据结构决定最低等级（查 2.3 节），算法等级若高于此则取算法\n3. **数学不计级**：组合数学、数论等理解性知识不计入定级\n4. **模板题降级**：若只需套模板，可酌情降一级\n\n### 3.2 组合判定表\n\n| 组合情况 | 定级规则 |\n|---------|---------|\n| 算法A + 算法B | 取 max(级别A, 级别B) |\n| 算法 + 数据结构 | 取 max(算法级别, 数据结构最低级别) |\n| 算法 + 数学 | 按算法定级 |\n| 多算法串联 | 取最高级算法 |\n| 多算法并行 | 取最高级算法 |\n\n### 3.3 等级边界判定\n\n| 情况 | 判定 |\n|------|------|\n| 一级 vs 二级 | 有无嵌套循环 |\n| 二级 vs 三级 | 有无数组/字符串操作 |\n| 三级 vs 四级 | 有无递推/排序/二维数组/结构体 |\n| 四级 vs 五级 | 有无二分/贪心/递归/链表 |\n| 五级 vs 六级 | 有无DFS/BFS/DP/树/栈/队列 |\n| 六级 vs 七级 | 有无复杂DP/图遍历/哈希表 |\n| 七级 vs 八级 | 有无MST/最短路/倍增 |\n\n### 3.4 定级示例\n\n| 题特征 | 最高算法 | 数据结构 | 数据结构下限 | 最终级别 |\n|-------|:-------:|:-------:|:----------:|:-------:|\n| A+B | 无 | 基本类型 | 一级 | **一级** |\n| 判断闰年，多分支 | 无 | 基本类型 | 一级 | **一级** |\n| 求1到N和，单层循环 | 无 | 基本类型 | 一级 | **一级** |\n| 打印九九表，嵌套循环 | 无 | 基本类型 | 一级 | **一级**（无数组） |\n| 数组最大值 | 无 | 一维数组 | 三级 | **三级** |\n| 字符串反转 | 无 | 字符串 | 三级 | **三级** |\n| 暴力枚举两数之和 | 枚举（三级） | 一维数组 | 三级 | **三级** |\n| 模拟井字棋 | 模拟（三级） | 二维数组 | 四级 | **四级** |\n| 雷域统计（二维数组遍历） | 无特定算法 | 二维数组 | 四级 | **四级** |\n| 结构体排序 | 排序（四级） | 结构体 | 四级 | **四级** |\n| 二分查找 | 二分（五级） | 一维数组 | 三级 | **五级**（算法>数据结构） |\n| 走迷宫DFS | DFS（六级） | 二维数组 | 四级 | **六级**（算法>数据结构） |\n| Dijkstra最短路 | 最短路（八级） | 图 | 七级 | **八级**（算法>数据结构） |\n\n---\n\n## 第四步：检查清单（必做）\n\n### 4.1 自查清单\n\n完成定级后，逐项检查：\n\n- [ ] **2.1 核心知识**：题目知识点覆盖哪一级核心知识？\n- [ ] **2.2 算法识别**：最高级算法查表后对应哪一级？\n- [ ] **2.3 数据结构下限**：所用数据结构设定了什么下限？\n- [ ] **3.1 综合判定**：取 max(算法级别, 数据结构下限) 后结果为何？\n- [ ] **数学不计级**：是否错误地将数学知识计入等级？\n- [ ] **边界情况**：是否处于等级边界？仔细判断。\n- [ ] **常见误判**：是否犯了常见误判中的错误？\n\n### 4.2 常见误判速查\n\n| 误判 | 正确 | 原因 |\n|------|------|------|\n| 求1到N和 → 一级 | **一级** ✅ | 单层循环，无数组，一级正确 |\n| 数组求最大最小值 → 二级 | **三级** | 一维数组是三级知识，数据结构下限三级 |\n| 二维数组遍历 → 三级 | **四级** | 二维数组是四级知识，数据结构下限四级 |\n| 结构体排序 → 三级 | **四级** | 结构体+排序均属四级 |\n| 二分查找+数组 → 三级 | **五级** | 算法优先：二分查找是五级 |\n| 递推+一维数组 → 三级 | **四级** | 算法优先：递推是四级 |\n| DFS走迷宫 → 四级 | **六级** | 算法优先：DFS是六级 |\n| 并查集 → 三级 | **七级** | 并查集是七级图算法 |\n| Dijkstra → 七级 | **八级** | 最短路是八级 |\n\n### 4.3 复核流程\n\n```\n1. 识别题目的核心知识 → 查 2.1 节初步定位\n2. 识别题目的最高级算法 → 查 2.2 节得算法级别\n3. 识别题目的最高级数据结构 → 查 2.3 节得数据结构下限\n4. 取 max(算法级别, 数据结构下限) → 初步定级\n5. 检查是否有\"数学不计级\"或\"模板可降级\"情况\n6. 对照 3.4 节示例和 4.2 节常见误判确认\n7. 输出最终定级\n```\n\n---\n\n## 第五步：定难（思维复杂度）\n\n**独立于GESP级别**：一级题可甚难（复杂嵌套），八级题可甚简（直套模板）。\n\n> ⚠️ **星级仅供内部定分参考，不写入题面。** 题面（problem_zh.md）难度标注直接采用第六步算出的 CF 分数（score），格式 `难度（CF Rating）：**XXXX**`，与 `problem.yaml` 的 `score` 一致。\n\n### 难度等级（五星制）\n\n| 星级 | 特征 | 举例 |\n|:----:|------|------|\n| ⭐ | 直套公式/模板，一步到位 | 直分支判断、数组逆序、简公式 |\n| ⭐⭐ | 需简变形或组合2知识点 | 结构体排序、多条件筛选 |\n| ⭐⭐⭐ | 需算法综合或思维转化 | DP态设计、图遍历变体 |\n| ⭐⭐⭐⭐ | 复杂优化、数据结构结合 | 线段树优化、复杂图论 |\n| ⭐⭐⭐⭐⭐ | 高难竞赛题 | 高级算法组合 |\n\n### 定难规则\n\n1. **看拐点**：需\"想一步\"否，而非\"直做\"？\n2. **看组合**：需组多不相关知识点否？\n3. **看边界**：正理边界需特殊思维否？\n4. **看数据**：需算法效率上动脑否？\n\n---\n\n## 第六步：定分（CF Rating 估算）\n\n**目标**：为题目估算 Codeforces Rating（800~3500），写入 `problem.yaml` 的 `score` 字段，并作为题面（problem_zh.md）的难度标注（`难度（CF Rating）：XXXX`）。\n此步在定级（第三步）和定难（第五步）完成之后执行，综合二者结果。\n\n### 6.1 基分表（GESP 等级 → 基准 Rating）\n\n> ⚠️ 本表基于 Codeforces 实际题目 Rating 统计校准，非理论推算。\n> 例如：CF 上纯 0/1 背包模板题 ≈ 1300，树形 DP ≈ 1600，Dijkstra ≈ 1700。\n\n| GESP级别 | 基准分 | 典型 CF Rating 区间 | CF 参考题 |\n|:--------:|:-----:|:-------------------:|-----------|\n| 一级 | 800 | 800~900 | CF 4A (800) |\n| 二级 | 900 | 900~1000 | CF 282A (900) |\n| 三级 | 1050 | 1000~1200 | CF 263A (1100) |\n| 四级 | 1200 | 1100~1300 | CF 69A (1200) |\n| 五级 | 1300 | 1200~1400 | CF 189A Cut Ribbon (1300, DP) |\n| **六级** | **1350** | **1200~1500** | CF 1446A Knapsack (1300, 贪心背包) |\n| **七级** | **1600** | **1500~1900** | CF 698A (1500, DP), CF 474D (1700, DP) |\n| **八级** | **2000** | **1900~2500** | CF 1132E Knapsack (2100), CF 166E (2200, DP) |\n\n> **校准依据**：CF 背包类题如 1446A(Knapsack) = 1300，复杂背包+剪枝如 1132E = 2100。\n> 简单 DP（斐波那契/递推）≈ 1200，标准背包模板 ≈ 1300~1400，\n> 背包 + 变形/优化 ≈ 1500~1700，高级 DP（状压/树形）≈ 1800+。\n\n**取法**：以 GESP 等级查基准分，再以下列因素上下浮动。\n\n### 6.2 浮动修正\n\n#### 难度星级修正\n\n| 难度星级 | 修正值 | 说明 |\n|:--------:|:------:|------|\n| ⭐ | 基准 -100 | 模板/直套，降一档 |\n| ⭐⭐ | ±0 | 正常难度 |\n| ⭐⭐⭐ | +100 | 需思维转化 |\n| ⭐⭐⭐⭐ | +200 | 复杂优化 |\n| ⭐⭐⭐⭐⭐ | +300+ | 高难竞赛 |\n\n#### 数据规模修正\n\n题目 n 的范围暗示所需时间复杂度，可辅判 Rating：\n\n| 规模特征 | 预期复杂度 | 修正倾向 |\n|---------|-----------|---------|\n| n ≤ 20 | 指数级（状压/暴搜） | rating 常 ≥ 1600 |\n| n ≤ 10^5 | O(n log n) | 主流题，1200~2000 |\n| n ≤ 10^9 | O(log n) 或数学 | 可低可高，看思维量 |\n\n#### 已知 CF Rating（最高优先级）\n\n若题目来自 Codeforces 且已知 Rating：\n- **直接采用已知 Rating**，跳过估算\n- 例：CF Round 某题 Rating 1400 → `score: 1400`\n\n#### AtCoder → CF 难度换算\n\nAtCoder 题目难度分（题面所标 Difficulty）不可径用——须换算为 CF Rating 方可填入 `score`。\n\n| 优先级 | 方法 | 条件 |\n|:------:|------|------|\n| 最高 | Difficulty 分数换算 | 题面可见 AtCoder Difficulty 值 |\n| 次高 | 比赛位置估分 | 无 Difficulty 时，按比赛+题号估算 |\n| 最低 | GESP 基分法 | 两者皆无，回退至 GESP 估分 |\n\n##### 方法一：Difficulty 分数换算（优先）\n\nAtCoder 题面标有 Difficulty 值（如 `Difficulty: 1287`），按下表换算为 CF Rating。\n\n| AtCoder Difficulty | CF Rating 区间 | 取中值（快速参考） |\n|:------------------:|:--------------:|:------------------:|\n| 0~99 | 800 | 800 |\n| 100~399 | 800~900 | 850 |\n| 400~799 | 900~1100 | 1000 |\n| 800~1199 | 1100~1400 | 1250 |\n| 1200~1599 | 1400~1700 | 1550 |\n| 1600~1999 | 1700~2000 | 1850 |\n| 2000~2399 | 2000~2300 | 2150 |\n| 2400~2799 | 2300~2700 | 2500 |\n| 2800~3199 | 2700~3100 | 2900 |\n| 3200+ | 3100~3500 | 3300 |\n\n**换算公式**（同区间内插值用）：\n\n```\ndiff ≤ 100:  CF = 800\n100 < diff ≤ 400:  CF = 800 + (diff - 100) × 0.5\n400 < diff ≤ 1200: CF = 950 + (diff - 400) × 0.375\n1200 < diff ≤ 2000: CF = 1250 + (diff - 1200) × 0.75\n2000 < diff ≤ 2800: CF = 1850 + (diff - 2000) × 1.0\n2800 < diff: CF = 2650 + (diff - 2800) × 1.0, cap 3500\n```\n\n例：AtCoder Difficulty 1287\n→ 查表 1200~1599 区间 → CF 1400~1700\n→ 公式：1250 + (1287 - 1200) × 0.75 = 1250 + 65 = 1315 → 取整 1300\n\n##### 方法二：比赛位置估分（Difficulty 不可知时）\n\n| 比赛 | 题号 | CF 近似 |\n|:----:|:----:|:-------:|\n| ABC | A | 800~900 |\n| ABC | B | 900~1100 |\n| ABC | C | 1100~1300 |\n| ABC | D | 1300~1600 |\n| ABC | E | 1600~2000 |\n| ABC | F | 1900~2400 |\n| ABC | G（旧ARC） | 2200~2800 |\n| ARC | A(C) | 1600~2100 |\n| ARC | B(D) | 2000~2500 |\n| ARC | C(E) | 2400~2900 |\n| AGC | A | 2000~2800 |\n| AGC | B+ | 2800~3500 |\n\n**注意**：比赛位置法较粗糙，同一位置因场次不同可 ±200 偏差。有 Difficulty 值时务必用方法一。\n\n### 6.3 估分公式\n\n```\nscore = 基准分 + 难度修正 + 数据规模修正\n```\n\n- 结果须落在 800~3500 区间\n- 取整至 50 的倍数（如 1300、1450、1700）\n\n### 6.4 示例\n\n| 题特征 | GESP | 难度 | 估算 process | score |\n|-------|:----:|:----:|-------------|:-----:|\n| A+B，无分支 | 一级 | ⭐ | 基 800 - 100(⭐) | 800 |\n| 一维数组统计，单循环 | 三级 | ⭐⭐ | 1050 ±0 | 1050 |\n| 二分查找 + 数组 | 五级 | ⭐⭐ | 1300 ±0 | 1300 |\n| **0/1 背包模板（采药）** | **六级** | **⭐⭐** | **1350 ±0** | **1350** |\n| **完全背包模板（无限拿）** | **六级** | **⭐⭐** | **1350 ±0** | **1350** |\n| **完全背包 + 最小化（零钱兑换）** | **六级** | **⭐⭐⭐** | **1350 + 100** | **1450** |\n| **完全背包 + 方案数（零钱兑换II）** | **六级** | **⭐⭐⭐** | **1350 + 100** | **1450** |\n| 树形 DP + 数据 2e5 | 七级 | ⭐⭐⭐ | 1600 + 100 | 1700 |\n| Dijkstra 求最短路 | 八级 | ⭐⭐ | 2000 ±0 | 2000 |\n| **完全背包 + 贪心（最大数字）** | **六级** | **⭐⭐⭐** | **1350 + 100** | **1450** |\n| **逆向背包（硬币面值还原）** | **六级** | **⭐⭐⭐⭐** | **1350 + 200** | **1550** |\n| CF Round 已知 1600 | - | - | 直接采用 | 1600 |\n\n### 6.5 自检\n\n- [ ] `score` 在 800~3500 区间？\n- [ ] 已知 CF Rating 者直接采用了？\n- [ ] AT/CF 比赛题标记了来源以便日后对照？\n\n---\n\n## 大纲要点（2026版）\n\n1. **数组限制**：三级/四级数组不含变长数组（vector）\n2. **函数限制**：四级函数不含Lambda/运算符重载\n3. **C++标准**：以C++11为准\n4. **复杂度**：需分析时间/空间复杂度\n\n## 下一步\n\n成 → `04-problem.md`\n\nFile v2.5.5:steps/04-problem.md\n\n# Step 4: 生题面\n\n## 目标\n\n生中文题面 `{WORK_DIR}/problem_zh.md`。\n\n## 铁律：仅译不编\n\n1. 仅译，保原构\n2. 禁 AI 内心戏：禁分析、推理、计算过程\n3. ❌ **禁解题思路/解法分析/题解**：题面只含描述、输入输出格式、样例、数据范围，不附任何解题指引或算法讲解\n4. 样例释：仅译原题释\n5. **禁改样例**：样例输入/输出必原封不动复，不增删改任一字\n6. **图片链处理**：题面中图片链接区分配图来源：\n   - **互联网链**（`http://` / `https://` 起）：原样保留，不删不替\n   - **本地图/附件**（PDF 提取、用户本地文件等）：拷贝至 `{WORK_DIR}/additional_file/`，题面中引用改为 `![](file://文件名)`，禁用 `images/` 目录\n7. **留示意**：题面原有示意图、表格、公式等必完整留\n\n## 标题格式\n\n`中文标题(英文原标题)`\n\n例：\n- `移除前导o(Trimo)`\n- `传感器数据记录(Sensor Data Logging)`\n\n## 题面格式\n\n```markdown\n<div class=\"water\">\n\n# 中文标题(英文原标题)\n\n#### 题目描述\n[中文翻译]\n\n#### 输入格式\n...\n\n#### 输出格式\n...\n\n#### 样例输入 #1\n...\n\n#### 样例输出 #1\n...\n\n#### 数据范围\n...\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP X级**，难度（CF Rating）：**XXXX**。\n\n> ⚠️ **GESP X 级 和 CF 分数 不得凭印象填！**\n> 必先读 **`03-gesp.md`**，以第三步「定级」结果填 X，以第六步「定分」结果（score）填 CF 分数。\n> 二者均自 03-gesp.md 来，非 AI 自由发挥。CF 分数须与 `problem.yaml` 的 `score` 字段一致。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> ⚠️ **占位用，生测试数据后按实际分组更新说明列。**\n\n</div>\n```\n\n## 更名工作目录（要务！）\n\n生题面后，**将标题加入工作目录名**，增辨识：\n\n```bash\n# 定标题简写：\n# - 英文标题：取全标题，空格→下划线，转小写\n# - 中文标题：取前 4~8 字\n# 例：标题为\"移除前导o(Trimo)\" → 简写为\"移除前导o_Trimo\"\n#      标题为\"Sensor Data Logging\" → 简写为\"sensor_data_logging\"\n\nmv {WORK_DIR} {WORK_DIR}_{标题简写}\n# {WORK_DIR} = {WORK_DIR}_{标题简写}\n```\n\n> **注**：若 PID 为 null（原创题），径用标题简写：\n> ```bash\n> BASE_DIR=$(detect_desktop)\n> mv $BASE_DIR/work $BASE_DIR/work_{标题简写}\n> # {WORK_DIR} = $BASE_DIR/work_{标题简写}\n> ```\n\n## 下一步\n\n成 → `05-config.md`\n\nFile v2.5.5:steps/05-config.md\n\n# Step 5: 写配置\n\n## 目标\n\n写入 `{WORK_DIR}/problem.yaml`。\n\n## pid 命名\n\n```\n用户指定 > 比赛自命名 > null\n```\n\n### 比赛自命名\n\n格式：`{比赛简称}{场次}{题号}`\n\n| 来源 | 例 |\n|------|------|\n| AtCoder ABC | `abc453a` |\n| AtCoder ARC | `arc123a` |\n| Codeforces | `cf789a` |\n| LeetCode | `lc1234` |\n| Luogu | `lgP1001` |\n\n### 无比赛信息\n\n单题搬运且无定来源：`pid: \"null\"`\n\n## 配置格式\n\n```yaml\npid: \"abc453a\"\ntitle: \"移除前导o(Trimo)\"\nscore:  # AI 按 03-gesp.md「第六步：定分」规则估算\ntag:\n  - \"字符串\"\n  - \"模拟\"\n  - \"GESP 1级\"\n```\n\n## 注\n\n1. pid 按规而判，非无脑填 null\n2. title 必用 `中文(英文)` 格式\n3. **score 分数必填（AI 动态估算）**：\n   - 范围 800~3500（与 Codeforces Rating 对齐）\n   - 按 **03-gesp.md「第六步：定分」** 规则综合估算\n   - 比赛中已知分数直接采用（如 CF 的 Rating）\n   - **禁写死默认值**，必须逐题分析后填入\n4. **tag 必含多项**：\n   - 1~3 个**知识点标签**（如\"字符串\"\"动态规划\"\"图论\"\"贪心\"\"模拟\"\"前缀和\"等，贵精不贵多）\n   - 1 个**等级标签**（`GESP X级`，注意 X 与数字间有空格）\n   - **禁**只写一个等级标签完事\n\n5. **等级标签必读 03-gesp.md 后填写**：\n   - ⚠️ 先读 **`03-gesp.md` → 第二步「算法分类详表」**，对照题目算法确定 GESP 等级\n   - ⚠️ 再读 **`03-gesp.md` → 第六步「定分」** 估算 score\n   - **禁凭印象填等级**，背包 DP ≠ 四级递推（背包 ∈ 六级）\n   - `tag` 中的 `GESP X级` 与 `score` 的估算，二者均以 03-gesp.md 为准，缺一不可\n\n## 测试数据分组配置\n\n测试数据之分组（HydroOJ subtask）在 `{WORK_DIR}/testdata/config.yaml` 中配，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 测试数据分组配置\n\n测试数据的分组（HydroOJ subtask）在 `testdata/config.yaml` 中配置，\n详见 **Step 07-testdata.md → 配置文件（HydroOJ subtask 格式）**。\n\n## 下一步\n\n成 → `06-std.md`\n\nFile v2.5.5:steps/06-std.md\n\n# Step 6: 实现标程\n\n## 目标\n\n写标准解题程序 `{WORK_DIR}/std.cpp`。\n\n## 模板\n\n```cpp\n#include <iostream>\n#include <vector>\n#include <map>\n#include <cmath>\n#include <set>\n#include <queue>\n#include <stack>\n#include <list>\n#include <tuple>\n#include <unordered_map>\n#include <algorithm>\n#include <climits>\n#include <tuple>\n#define endl '\\n'\n#define int long long\n#define pii pair<int, int>\nusing namespace std;\nconst int inf = 0x3f3f3f3f3f3f3f3f;\nconst int mod = 998244353;\nconst int mxn = 3e6 + 5;\n\nint n,a[114514];\nint c=0;\nsigned main()\n{\n    cin>>n;\n    for(int i=0;i<n;++i) cin>>a[i];\n    for(int i=0;i<n-2;++i)\n    {\n        c+=(a[i]<a[i+1] and a[i+1]>a[i+2]);\n    }\n    cout<<c<<endl;\n    return 0;\n}\n\n```\n\n## 要点\n\n1. 据题定算法\n2. OI 风格：**左大括号单独起一行**，**全局变量**，简变量名（如 `w`, `v`, `dp`, `n`, `m`）\n3. `#include <bits/stdc++.h>` 尽量少用，优先逐一声明所需头文件\n4. **STL 容器（vector / map / set 等）尽量少用**——优先用全局数组（`int dp[105][105]` 而非 `vector<vector<int>>`），确有必要时可用\n5. ⚠️ **禁 `memcpy` / `memset`**——数组拷贝用 `vector` 赋值（`auto prev = dp`），初始化用 `fill`\n6. ⚠️ **禁动态内存分配**——`new`/`malloc`/`vector.resize()` 均不可\n7. ⚠️ **字符串用 `std::string`，禁用 `char[]`**——读入用 `cin >> s` 或 `getline`，输出用 `s.c_str()`（如需）\n   - ❌ `char s[105]; scanf(\"%s\", s);`\n   - ✅ `string s; cin >> s;`\n8. ⚠️ **不引入 `<cstring>` / `<string.h>`**——禁 `char[]`、`memcpy`、`memset`。初始化用 `fill`，拷贝用赋值\n9. 时复杂度满足时限\n\n## ⚠️ 铁律：写后即验（生数据前）\n\n写完 std.cpp **必即**用题面样例验之，不跳：\n\n```bash\ncd {WORK_DIR}\ng++ std.cpp -o std -std=c++17\n\n# 逐样例输入验输出，一一对照题面\necho \"【样例输入1】\" | ./std\n# 核出与题面样例输出1一致否\n\necho \"【样例输入2】\" | ./std\n# 核出与题面样例输出2一致否\n\n# ... 诸样例逐一验\n```\n\n**禁**：\n- ❌ 写 std 不验样例即写 mkin.h / 生数据\n- ❌ 只验一样例即谓全对\n- ❌ 样例未过仍续生数据\n\n**必**：\n- ✅ 诸题面样例全过方可入下步\n- ✅ 样例不过则改 std.cpp，重验，至全过\n\n## 下一步\n\n诸样例过 → `07-testdata.md`\n\nArchive v2.5.4: 26 files, 43210 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1803b), question/problem.yaml (164b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2280b), SKILL.md (5204b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (16122b), steps/04-problem.md (2495b), steps/05-config.md (2108b), steps/06-std.md (1755b), steps/07-testdata.md (8021b), steps/08-audit.md (5087b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5044b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1678b), steps/contest/03-move.md (3963b), _meta.json (127b)\n\nFile v2.5.4:SKILL.md\n\n---\nname: 搬题姬\nversion: 2.5.4\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写 GESP 等级：必含 1~3 个知识点标签 + 1 个等级标签，禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOID 写完 std 不验样例：所有样例输入逐一喂入，输出须与题面完全一致，全过方可进入数据生成**\n- ⚠️ **AVOID 修改样例：样例输入/输出必原样复制，禁增删改任何字符**\n- ⚠️ **AVOID 删除图片链接：题面中 `![](url)`、`<img>` 标签等所有图片语法必原样保留**\n- ⚠️ **AVOID 删除示意图：题面原有示意图、表格、公式必完整保留**\n- ⚠️ **生成测试点时 AVOID 生成 problem_zh.md、problem.yaml**\n- ⚠️ **生成测试点时 AVOID 全局打包（09-package.md 之整个工作目录 zip），只打包 testdata/ 下文件**\n- ⚠️ **生成测试点时 AVOID 跳过 std.cpp：无标程则 .out 不出**\n- ⚠️ **生成测试点时 AVOID 只写样例数据：25 组全覆盖（含 Hack）**\n- ⚠️ **生成测试点时 AVOID 交付前不验证：必查 .in 格式、.out 与样例一致、文件成对存在**\n\n---\n\n## 入口\n\n读 steps/00-detect-url.md\n\nFile v2.5.4:_meta.json\n\n{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"2.5.4\",\n  \"publishedAt\": 1783940174071\n}\n\nFile v2.5.4:references/testdata-design.md\n\n# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| C1 | 无解情况 | 输出 -1, Impossible |\n| C2 | 唯一解 | 仅一种构造方案 |\n| C3 | 多解任意 | 任输一合法解即可 |\n\n---\n\n## 三、Hack 数据设计\n\n| 常见错误 | Hack 数据特征 | 代码示例 |\n|---------|--------------|---------|\n| **int 溢出** | 用近 2³¹-1 或 2⁶³-1 大数 | `fout << \"2147483647 2147483647\"` |\n| **边界漏判** | N=1, N=max, a[i]=0 | `fout << \"1\\n0\"` |\n| **精度误差** | 需 double 非 float，或浮点比较 | `fout << \"0.1 0.2\"`（=0.3?） |\n| **超时** | 迫 O(n²) 算法超限 | N=200000 逆序 |\n| **错误贪心** | 使贪心策略得非优解 | 经典反例数据 |\n| **负数取模** | C++ `-5 % 3` = -2（非 1） | 含负数的模运算 |\n| **未开 long long** | 两 int 相乘超 2³¹-1 | `fout << \"50000 50000\"` |\n| **数组越界** | n 上限 + 特殊访问 | n=100000 边界访问 |\n| **字符串结束符** | 含空格、换行 | `fout << \"abc def\"` |\n| **多测不清空** | 多组测试用例（T≥2） | T=2 且共用数据结构 |\n\n---\n\n## 四、各规模数据生成建议\n\n### 小规模（case 3-8）\n\n| 用例 | N 范围 | 目的 |\n|:----:|:------:|------|\n| 3-4 | [1, 5] | 最小合法输入 |\n| 5 | [5, 10] | 稍复杂 |\n| 6 | 特定构造 | 特殊性质 1（如单调递增） |\n| 7 | 特定构造 | 特殊性质 2（如全相同） |\n| 8 | 特定构造 | 特殊性质 3（据题定制） |\n\n### Hack 数据（case 9-11）\n\n每例针对一类常见错误。宁小勿大——越简单越方便定位错因。\n\n### 中规模（case 12-15）\n\nN 在 [100, 10000] 范围随机，可混入部分边界特征。\n\n### 大规模（case 16-20）\n\n| 用例 | N | 目的 |\n|:----:|:-:|------|\n| 16-17 | 上限 80% | 接近极限 |\n| 18 | 上限 100% | 极限压力 |\n| 19 | 上限 + 特殊构造 | 极限 + Hack |\n| 20 | 上限 + 全相同/全逆序 | 极限 + 退化 |\n\n### 随机回归（case 21-25）\n\nN 在 [1, 上限] 之间随意随机，类型混合，覆盖意外路径。\n\n---\n\n## 五、config.yaml 格式\n\n```yaml\ntype: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out\n```\n\n**注：**\n- 若 OJ 支持自动识别（文件名 1.in~25.in），可省 `subtasks` 只写顶层 `time`/`memory`\n- 用 `subtasks` 时必显式列出所有 `cases`\n- 顶层 `time`/`memory` 为全局默认，可被子任务覆盖\n- `subtasks[].id` 从 0 开始编\n\n---\n\n## 六、测试点分布表格式\n\n生数据后，**必**于 `problem_zh.md` 末（`</div>` 前）追加以下表格。此为硬性要求，两流程（常搬题/仅生测试点）皆同。\n\n### 示例\n\n```markdown\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |\n```\n\n### 各列规则\n\n| 列 | 规则 |\n|----|------|\n| Subtask | 对应 config.yaml 中 subtask.id |\n| 分值 | 该 subtask 的 score |\n| 测试点编号 | 该 subtask 覆盖的 case 编号范围（如 `1~2`、`3~8`） |\n| 说明 | 描述每组之规模与数据特征 |\n\n### 说明列撰写规范\n\n| 写法 | 说明 |\n|------|------|\n| `样例` | 样例数据 |\n| `小规模 N≤10` | 小规模随机，N 最大 10 |\n| `特殊: 全同值` | 所有值相等 |\n| `特殊: 严格递增` | 严格递增序列 |\n| `Hack: N=1边界` | Hack 边界漏判 |\n| `Hack: 大数值溢出` | Hack int 溢出 |\n| `中规模 N≈100~10000` | 中等规模 |\n| `大规模 N≈2e5~1e6 压力` | 大规模压力 |\n| `随机 N=1~1e6 回归` | 回归测试 |\n\n### 约束\n\n- ✅ 可写规模范围（N≤10、N≈1e5 等）\n- ✅ 可写构造类型（全同值、单调、链、菊花图等）\n- ❌ 禁写答案（ans=xx、输出 Yes/No 等）\n- ❌ 禁写具体计算值（d=99991、S=1e9 等）\n- ❌ 禁逐 case 列表（只按 subtask 分组）\n\nFile v2.5.4:question/problem_zh.md\n\n<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度等级：**⭐⭐⭐**。\n\n---\n\n### 测试点分布\n\n| Subtas\n\nArchive v2.5.3: 26 files, 43036 bytes\n\nFiles: question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1803b), question/problem.yaml (164b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (10342b), skill-card.md (2700b), SKILL.md (5204b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (16122b), steps/04-problem.md (2271b), steps/05-config.md (2108b), steps/06-std.md (1755b), steps/07-testdata.md (8021b), steps/08-audit.md (5019b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (5044b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1539b), steps/contest/03-move.md (3963b), _meta.json (127b)\n\nArchive v2.5.2: 27 files, 43606 bytes\n\nFiles: 6a2cc6388c06f9a055d4b57c.md (6511b), question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1462b), question/problem.yaml (164b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (8690b), skill-card.md (2480b), SKILL.md (6130b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (14201b), steps/04-problem.md (1916b), steps/05-config.md (2108b), steps/06-std.md (1755b), steps/07-testdata.md (5596b), steps/08-audit.md (4893b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (4573b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1539b), steps/contest/03-move.md (3963b), _meta.json (127b)\n\nArchive v2.5.1: 27 files, 43506 bytes\n\nFiles: 6a2cc6388c06f9a055d4b57c.md (6511b), question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1462b), question/problem.yaml (164b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (8690b), skill-card.md (2545b), SKILL.md (6130b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (14201b), steps/04-problem.md (1916b), steps/05-config.md (2108b), steps/06-std.md (1755b), steps/07-testdata.md (5381b), steps/08-audit.md (4893b), steps/09-from-file.md (2258b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (4573b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1539b), steps/contest/03-move.md (3963b), _meta.json (127b)\n\nArchive v2.5.0: 27 files, 42032 bytes\n\nFiles: 6a2cc6388c06f9a055d4b57c.md (6511b), question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1462b), question/problem.yaml (162b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (8690b), skill-card.md (2141b), SKILL.md (6130b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (14201b), steps/04-problem.md (1916b), steps/05-config.md (2104b), steps/06-std.md (1755b), steps/07-testdata.md (4253b), steps/08-audit.md (4893b), steps/09-from-file.md (547b), steps/09-package.md (2018b), steps/10-from-text.md (457b), steps/11-testdata-only.md (4573b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1539b), steps/contest/03-move.md (3961b), _meta.json (127b)\n\nArchive v2.4.1: 26 files, 38571 bytes\n\nFiles: 6a2cc6388c06f9a055d4b57c.md (6511b), question/mkdata.cpp (2103b), question/mkin.h (6890b), question/problem_zh.md (1462b), question/problem.yaml (162b), question/std.cpp (349b), question/testdata/config.yaml (1732b), references/testdata-design.md (8690b), skill-card.md (2286b), SKILL.md (5827b), steps/00-detect-url.md (1196b), steps/01-init.md (3052b), steps/02-get-info.md (1417b), steps/03-gesp.md (12179b), steps/04-problem.md (1916b), steps/05-config.md (2104b), steps/06-std.md (1755b), steps/07-testdata.md (4255b), steps/08-package.md (1849b), steps/09-from-file.md (547b), steps/10-from-text.md (457b), steps/11-testdata-only.md (4573b), steps/contest/01-list.md (678b), steps/contest/02-problem.md (1539b), steps/contest/03-move.md (3625b), _meta.json (127b)","readmeExcerpt":"Skill: ojimport Owner: fslong520 Summary: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Tags: algorithm:3.0.0, atcoder:3.0.0, codeforces:3.0.0, contest:3.0.0, gesp:3.0.0, import:3.0.0, latest:3.0.0, oj:3.0.0, problem:3.0.0 Version history: v3.0.0 | 2026-09-02T04:07:44.905Z | user 定级表加四级体系锚定(GESP/CSP-J/CSP-S/NOI)，超纲知识点循跨体系兜底规则升到CSP/NOI禁定格GESP级；CF定分改四维判据档位判定表，水题克制 v2.7.0 | 20","codeSnippets":[],"executableExamples":[{"language":"yaml","snippet":"type: default\ntime: 1s\nmemory: 256m\n\nsubtasks:\n  - score: 10\n    id: 0\n    cases:\n      - input: 1.in\n        output: 1.out\n      - input: 2.in\n        output: 2.out\n\n  - score: 20\n    id: 1\n    cases:\n      - input: 3.in\n        output: 3.out\n      - input: 4.in\n        output: 4.out\n      - input: 5.in\n        output: 5.out\n      - input: 6.in\n        output: 6.out\n      - input: 7.in\n        output: 7.out\n      - input: 8.in\n        output: 8.out\n\n  - score: 15\n    id: 2\n    cases:\n      - input: 9.in\n        output: 9.out\n      - input: 10.in\n        output: 10.out\n      - input: 11.in\n        output: 11.out\n\n  - score: 30\n    id: 3\n    cases:\n      - input: 12.in\n        output: 12.out\n      - input: 13.in\n        output: 13.out\n      - input: 14.in\n        output: 14.out\n      - input: 15.in\n        output: 15.out\n      - input: 16.in\n        output: 16.out\n      - input: 17.in\n        output: 17.out\n      - input: 18.in\n        output: 18.out\n      - input: 19.in\n        output: 19.out\n      - input: 20.in\n        output: 20.out\n\n  - score: 25\n    id: 4\n    cases:\n      - input: 21.in\n        output: 21.out\n      - input: 22.in\n        output: 22.out\n      - input: 23.in\n        output: 23.out\n      - input: 24.in\n        output: 24.out\n      - input: 25.in\n        output: 25.out"},{"language":"markdown","snippet":"---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 N≤5 / 特殊: 严格递增 / 特殊: 全同值 |\n| 2 | 15 | 9~11 | Hack: N=1 / Hack: N=2 / Hack: 大数值溢出 |\n| 3 | 30 | 12~20 | 中规模 N≈100~10000 / 大规模 N≈2e5~1e6 压力 |\n| 4 | 25 | 21~25 | 随机 N=1~1e6 回归 |"},{"language":"text","snippet":"5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800"},{"language":"text","snippet":"A 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80"},{"language":"python","snippet":"def is_multi_problem(content):\n    if content.count(\"---\") >= 2:\n        return True\n    markers = [\"## A -\", \"## B -\", \"## C -\", \"## D -\", \"## E -\"]\n    if sum(1 for m in markers if m in content) >= 2:\n        return True\n    return False"},{"language":"bash","snippet":"# 自动检测桌面路径（支持 Linux / macOS / Windows）\n# 检测到路径后确保目录存在，不存在则创建\ndetect_desktop() {\n    local d=\"\"\n    # Linux: ~/.config/user-dirs.dirs 中有 XDG_DESKTOP_DIR\n    if [ -f \"$HOME/.config/user-dirs.dirs\" ]; then\n        . \"$HOME/.config/user-dirs.dirs\"\n        if [ -n \"$XDG_DESKTOP_DIR\" ] && [ -d \"$XDG_DESKTOP_DIR\" ]; then\n            echo \"$XDG_DESKTOP_DIR\"\n            return\n        fi\n    fi\n    # macOS: ~/Desktop\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 中文: ~/桌面\n    d=\"$HOME/桌面\";   [ -d \"$d\" ] && echo \"$d\" && return\n    # Linux 西班牙语: ~/Escritorio\n    d=\"$HOME/Escritorio\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # Windows Git Bash / WSL: ~/Desktop (再试一次)\n    d=\"$HOME/Desktop\"; [ -d \"$d\" ] && echo \"$d\" && return\n    # 兜底：使用 ~/Desktop，不存在则创建\n    mkdir -p \"$HOME/Desktop\"\n    echo \"$HOME/Desktop\"\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ojimport\nversion: 3.0.0\ndescription: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - AskUserQuestion\n  - BrowserUse\n\nmetadata:\n  slug: ojimport\n  trigger: OJ题目、搬题、算法题搬运、搬运题目、搬道题、搬一下、AtCoder、Codeforces、GESP、题目导入、测试点、生成数据、测试数据\n---\n\n## Keywords\n\nOJ题目、搬题、搬运、搬运题目、算法题搬运、搬道题、搬一下、AtCoder、Codeforces、GESP、测试点、测试数据\n\n## Summary\n\n自OJ搬题，生标准化题包（题面+标程+数据）；或依用户所供，仅生测试数据（.in/.out）。\n\n## Strategy\n\n### 基路径\n\n自动检测用户桌面路径（支持 Linux/macOS/Windows），工作目录创建于桌面。\n步骤中 `{WORK_DIR}` 即 `{BASE_DIR}/work_{PID}_{标题简写}`，其中 `{BASE_DIR}` 为 `detect_desktop()` 检测结果。\n检测逻辑见 `steps/01-init.md`。\n\n### 参考文档\n\n生成测试数据前，先读 **`references/testdata-design.md`**，按题目类型选取边界清单与 Hack 策略。\n所有步骤文件（`07-testdata.md`）中的测试数据细节均引用该文档。\n\n### 单题搬运\n\n1. 读 steps/00-detect-url.md → 辨类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面：按来源\n   - URL：urlgo 访问 → snapshot → 解析（urlgo不可用时用 BrowserUse/WebFetch）\n   - 文件：读 steps/09-from-file.md → 自本地文件取题面\n   - 文本：读 steps/10-from-text.md → 自用户文本取题面\n4. 读 steps/03-gesp.md → 定等级（第二步）+ 定分数（第四步）\n5. 读 steps/04-problem.md → 生题面\n6. 读 steps/05-config.md → 写配置\n7. 实现标程 std.cpp\n8. 读 steps/07-testdata.md → 生数据（⚠️ 只改 mkin.h，勿动 mkdata.cpp）\n9. 读 steps/08-audit.md → 审计（文件完整性、模板一致、GESP等级、分值的复核）\n10. 打包：`zip -r $BASE_DIR/{PID}_{标题简写}.zip $BASE_DIR/work_{PID}_{标题简写}`（审计未过不打包）\n\n### ⚠️ 比赛搬运（必先创题面汇总文件）\n\n1. 读 steps/contest/01-list.md → 创题面汇总文件 `{contest_id}.md`\n2. 读 steps/contest/02-problem.md → **逐题译之，追加写入汇总文件**\n3. 读 steps/contest/03-move.md → **自文件读题面**，逐题生完整题包（含审计）\n4. **打包合集**：所有题目 zip 打包到同一 `{contest_id}.zip` 内，不散包\n\n### 生成测试点\n\n用户已有完整题面，仅需测试数据（.in/.out + config.yaml）。\n\n**触发词**：用户言\"生成测试点\"、\"出测试数据\"、\"想测试数据\"、\"写测试数据\"等。\n\n**流程：**\n\n1. 读 steps/00-detect-url.md → 辨输入类型\n2. 初始化：`BASE_DIR=$(detect_desktop); cp -r question $BASE_DIR/work_{PID}_{标题简写}`（详 01-init.md）\n3. 取题面信息：\n   - URL：urlgo/BrowserUse/WebFetch 访问并解析\n   - 文件：读 steps/09-from-file.md 取题面（仅内部参考，不生正式 problem_zh.md）\n   - 文本：读 steps/10-from-text.md 自文本取题面\n4. 读 steps/07-testdata.md → **以「仅测点」模式走流程：实现标程 + 生测试数据 + 打包 testdata.zip + 交付**\n5. **跳过**：题面格式化（04-problem.md）、GESP 定级（03-gesp.md）、配置写入（05-config.md）、审计（08-audit.md）、全局打包（09-package.md）\n\n## AVOID\n\n- AVOID 不读步骤文档即执行\n- ⚠️ **AVOID 跳过审计（08-audit.md）：题包生成后必审计，未过不打包**\n- ⚠️ **AVOID 不按模板格式**\n- AVOID 测试数据只写样例\n- AVOID GESP等级乱判\n- ⚠️ **AVOID 按速查表/公式机械估 CF 分（含星级映射、AtCoder 换算表、GESP 等级映射）：每次必走 03-gesp.md 第四步「CF 档位判定」，逐项判四维（思维拐点/算法门槛/数据规模/实现细节）锁定档位，水题克制（零思维量 ≤900），拿不准取低档（宁低勿高）**\n- ⚠️ **AVOID 等级乱判：凡涉及线段树/树状数组/平衡树/最短路/MST/并查集/堆/AC自动机/网络流/计算几何等进阶结构，必查 03-gesp.md 2.4 跨体系锚定表，禁低估（线段树 ≠ 5级）；GESP 大纲无此知识点必循 2.5 兜底规则升到 CSP-J/CSP-S/NOI，禁定格在 GESP 级**\n- AVOID 忘清理工作目录（`work_*`）\n- AVOID PID 格式错误（用小写 abc451a）\n- ⚠️ **AVOID tag 只写等级：必含 1~3 个知识点标签 + 1 个等级标签（`GESP X级`/`CSP-J`/`CSP-S`/`NOI`），禁单标签敷衍**\n- ⚠️ **AVOID 自对话上下文记忆题面，必自文件读取**\n- ⚠️ **AVOID 忘填出处 source：URL 搬运必填原题 URL（problem.yaml 的 source 字段 + 题面出处行）**\n- ⚠️ **AVOID 生成数据时修改 mkdata.cpp，只许修改 mkin.h**\n- ⚠️ **AVOID 测试数据缺少特殊性质和 hack 数据**\n- ⚠️ **AVOI"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71rk0chjcdy7ffgfc08hh9gd83ehq8\",\n  \"slug\": \"ojimport\",\n  \"version\": \"3.0.0\",\n  \"publishedAt\": 1788322064905\n}"},{"path":"references/testdata-design.md","content":"# 测试数据设计参考\n\n> 本文件为搬题姬之测试数据设计统一参考。`07-testdata.md` 与 `11-testdata-only.md` 均引用本文。\n> 设计测试数据时，先辨题目类型，再据本清单拣选对应边界。\n\n---\n\n## 一、数据分布框架\n\n每题生 **25 组**测试数据，分 5 个子任务：\n\n| Subtask | 用例编号 | 类型 | 分值 | 说明 |\n|---------|---------|------|------|------|\n| 0 | 1-2 | 样例数据 | 10 | 径自题面复制，逐字一致 |\n| 1 | 3-8 | 小规模 + 特殊性质 | 20 | 验基本功，覆边界 |\n| 2 | 9-11 | Hack 数据 | 15 | 针对常见错误写法 |\n| 3 | 12-20 | 中大规模 | 30 | 验效率与压力 |\n| 4 | 21-25 | 随机回归 | 25 | 混合随机覆盖 |\n\n**改分布时必同更三处：**\n1. `mkin.h` 顶 `SUBTASKS[]` 数组\n2. `{WORK_DIR}/testdata/config.yaml` 中 `subtasks[].cases` 列表\n3. 总分持 100\n\n---\n\n## 二、题型感知边界清单\n\n按题目类型分发边界测试。先判题属哪类，再取对应清单。\n\n### 🔹 通用边界（所有题目必覆）\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 最小合法输入 | n=1, n=0（若允许） | 边界漏判 |\n| G2 | 最大合法输入 | n 达数据范围上限 | 数组越界、超时 |\n| G3 | 全相同值 | 所有元素相等 | 重复值处理遗漏 |\n| G4 | 递增序列 | 已排序（升序） | 排序实现错误 |\n| G5 | 递减序列 | 逆序排列 | 排序实现错误 |\n| G6 | 极值填充 | 全 0、全 1、全 INT_MAX | 特殊分支未覆盖 |\n\n### 🔹 数组/序列题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| A1 | 严格单调 | 严格递增/递减 | 比较符误用（<= 而非 <） |\n| A2 | 先增后减 | 山峰形（1,2,3,2,1） | 峰值查找错误 |\n| A3 | 先减后增 | 山谷形（3,2,1,2,3） | 谷值查找错误 |\n| A4 | 交替变化 | 1,-1,1,-1,… | 趋势判断错误 |\n| A5 | 单元素数组 | n=1 | 循环/索引边界 |\n| A6 | 大范围跨度 | 值域极大（-10⁹ ~ 10⁹） | int 溢出 |\n| A7 | 浮点误差 | 需精度的浮点比较 | 用 `==` 判浮点等 |\n| A8 | 负数混合 | 含负数、零、正数 | 符号处理错误 |\n\n### 🔹 图论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| G1 | 链状图 | 退化成一条链 | 图遍历栈溢出 |\n| G2 | 菊花图 | 一个节点连所有其他节点 | 邻接表/矩阵边界 |\n| G3 | 完全图 | 每对节点都有边 | 内存/时间超限 |\n| G4 | 不连通图 | 多个连通分量 | 遍历不完整 |\n| G5 | 空图 | 无边，仅 n 个孤立点 | 特判遗漏 |\n| G6 | 自环 | 节点到自身的边 | 最短路/遍历死循环 |\n| G7 | 重边 | 两点间多条边 | 最短路更新错误 |\n| G8 | 零权图 | 所有边权为 0 | 算法复杂度退化 |\n| G9 | 负权边 | 含负边权 | 误用 Dijkstra（应 SPFA） |\n| G10 | 大权重 | 边权近 INT_MAX | 加法溢出 |\n| G11 | 稠密 vs 稀疏 | n 大 m 小 / n 小 m 大 | 邻接矩阵/表选型错误 |\n| G12 | 二分图 | 可二分着色 | 着色算法错误 |\n\n### 🔹 树题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| T1 | 链退化 | n 个节点一条链 | DFS 递归栈溢出 |\n| T2 | 星形 | 根连所有叶子 | 父节点判断错误 |\n| T3 | 完全二叉树 | 完美平衡 | 堆式存储索引 |\n| T4 | 单节点树 | n=1 | 特判 |\n| T5 | 大深度 | 深度 ≈ n | 递归爆栈 |\n| T6 | 权值全同 | 所有节点权值相等 | 树 DP 初值错误 |\n| T7 | 二叉树 | 每个节点最多两子 | 左右子混淆 |\n\n### 🔹 字符串题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| S1 | 单字符 | 长度为 1 | 子串边界 |\n| S2 | 全相同字符 | \"aaaaa\" | 失配跳转 |\n| S3 | 回文 | 正反相同 | 回文判断 |\n| S4 | 含特殊字符 | 空格、数字、大写 | 字符集假设 |\n| S5 | 最大长度 | n 达上限 | O(n²) 超时 |\n| S6 | 递增/递减 | 字符依次增减 | 字典序比较 |\n| S7 | 模式串重复 | 如 \"abcabcabc\" | KMP 失配 |\n\n### 🔹 DP 题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| D1 | 最小规模 | n=0, n=1 | DP 表初始化 |\n| D2 | 全零/全正 | 所有值为 0 或正数 | 初值 0 vs -INF |\n| D3 | 极值答案 | 答案 0 或答案 MAX | 输出格式 |\n| D4 | 递推依赖 | 需前置状态 | 循环顺序写反 |\n| D5 | 大答案溢出 | 答案超 int | 用 long long |\n\n### 🔹 数学/数论题\n\n| # | 性质 | 说明 | 针对错误 |\n|---|------|------|---------|\n| M1 | 质数集 | 全质数 | 质数判误 |\n| M2 | 互质集 | 大数互质 | GCD 溢 |\n| M3 | 模数边界 | 模 1, 模质数, 模 MAX | 负数取模 |\n| M4 | 大数运算 | 超 64 位 | 用 `__int128` 或模 |\n| M5 | 浮点比较 | 精度 1e-9 | 直 `==` 较浮点 |\n| M6 | 排组合极端 | C(n,k) 极值 | 组合数算错 |\n\n### 🔹 交互题\n\n| # | 性质 | 说明 |\n|---|------|------|\n| I1 | 最小查询次数 | 刚好够查出答案 |\n| I2 | 最大查询次数 | 用到上限 |\n| I3 | 错误猜测 | 每次猜错 |\n\n### 🔹 构造题\n\n| # | 性质 | 说明 |\n|--"},{"path":"question/problem_zh.md","content":"<div class=\"water\">\n\n# 帮贡排序\n\n#### 题目描述\n“星月家园”帮派有 $n$ 名成员，现在需要根据成员的帮贡（帮派贡献值）进行排序并重新分配职位。\n\n排序规则如下：\n1. 首先按帮贡从高到低排序。\n2. 如果帮贡相同，则按等级从高到低排序。\n3. 如果等级也相同，则按加入帮派的先后顺序（输入顺序）排序。\n\n排序完成后，根据排名分配职位：\n- 第 1 名：帮主\n- 第 2 名：副帮主\n- 第 3~4 名：护法\n- 第 5~7 名：长老\n- 第 8~12 名：堂主\n- 第 13~42 名：精英\n- 第 43 名及以后：帮众\n\n请输出排序后每位成员的姓名、职位和等级。\n\n#### 输入格式\n第一行包含一个整数 $n$ ($1 \\le n \\le 100$)，表示帮派人数。\n接下来 $n$ 行，每行包含一个成员的姓名（字符串）、等级（整数）和帮贡（整数）。\n\n#### 输出格式\n输出 $n$ 行，每行包含成员的姓名、职位和等级，用空格隔开。\n\n#### 样例输入 #1\n```\n5\nA 100 1000\nB 90 1000\nC 100 1000\nD 80 500\nE 100 800\n```\n\n#### 样例输出 #1\n```\nA 帮主 100\nC 副帮主 100\nB 护法 90\nE 护法 100\nD 长老 80\n```\n\n#### 数据范围\n$1 \\le n \\le 100$\n等级为 $0$ 到 $100$ 之间的整数。\n帮贡为 $0$ 到 $10000$ 之间的整数。\n\n#### 知识点与难度\n本题涉及的知识点从属于 **GESP四级**（结构体、多关键字排序、逻辑处理），难度（CF Rating）：**1000**。\n\n---\n\n### 测试点分布\n\n| Subtask | 分值 | 测试点编号 | 说明 |\n|:-------:|:----:|:----------:|:-----|\n| 0 | 10 | 1~2 | 样例 |\n| 1 | 20 | 3~8 | 小规模 / 特殊性质 |\n| 2 | 15 | 9~11 | Hack |\n| 3 | 30 | 12~20 | 中大规模 |\n| 4 | 25 | 21~25 | 随机回归 |\n\n> 生测试数据后，按实际 subtask 分组改写上表。\n\n</div>"},{"path":"skill-card.md","content":"## Description:\n\nImports programming contest problems from OJ platforms such as AtCoder and Codeforces into standardized problem packages, or generates test data from user-provided problem statements.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fslong520](https://clawhub.ai/user/fslong520)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and competitive programming problem maintainers use this skill to convert imported or supplied OJ problem statements into standardized problem packages. It can produce problem Markdown, YAML configuration, C++ reference solutions, generated test data, audit guidance, and packaged ZIP deliverables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow can delete, rename, zip, compile, or run files in Desktop work directories.\n\nMitigation: Use a controlled workspace and require path validation plus confirmation before any rm, mv, zip, compile, or run step.\n\nRisk: Imported problem text, titles, IDs, and URLs are untrusted inputs that can influence generated files and commands.\n\nMitigation: Validate and sanitize problem identifiers, titles, source URLs, filenames, and resolved paths before writing files or executing commands.\n\nRisk: Generated C++ reference solutions and test-data generators are executable code.\n\nMitigation: Review generated source files before compiling or running them, preferably in a sandbox or disposable problem workspace.\n\n## Reference(s):\n\n- [Test Data Design Reference](artifact/references/testdata-design.md)\n- [ClawHub Skill Page](https://clawhub.ai/fslong520/skills/ojimport)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Markdown instructions with C++ source files, YAML configuration, generated test data files, and ZIP packages]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces file-oriented deliverables and may compile, run, clean, and package generated artifacts during the workflow.]\n\n## Skill Version(s):\n\n3.0.0 (source: SKILL.md frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Skill: ojimport Owner: fslong520 Summary: 从 OJ 平台搬运题目（含AtCoder/Codeforces等），生成标准化题目文件包；也可根据用户提供的题目仅生成测试数据。用户说\"搬运\"\"搬题\"\"搬道题\"\"导入题目\"均适用 Tags: algorithm:3.0.0, atcoder:3.0.0, codeforces:3.0.0, contest:3.0.0, gesp:3.0.0, import:3.0.0, latest:3.0.0, oj:3.0.0, problem:3.0.0 Version history: v3.0.0 | 2026-09-02T04:07:44.905Z | user 定级表加四级体系锚定(GESP/CSP-J/CSP-S/NOI)，超纲知识点循跨体系兜底规则升到CSP/NOI禁定格GESP级；CF定分改四维判据档位判定表，水题克制 v2.7.0 | 20","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1106,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T09:20:36.230Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:48:18.489Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}