--- name: vloj description: LibreOJ题目抓取与解题工作流。用户输入形如loj1/loj001或https://loj.ac/p/1 等题号或URL时触发;创建以题号命名的空文件夹,使用Chrome DevTools MCP读取题面并保存为md文件,最后用C++生成解答文件。 --- # vloj ## 目标 - 解析题号,创建以题号命名的空文件夹。 - 访问对应题目页面,抓取题面并写入Markdown。 - 编写C++解答文件。 ## 触发与解析 - 支持输入示例:`loj1`、`loj001`、`https://loj.ac/p/1`、`http://loj.ac/p/123`。 - 提取连续数字作为题号,去除前导零后作为规范题号。 - 题目URL格式固定为:`https://loj.ac/p/`。 ## 工作流 1. **创建空文件夹** - 在当前工作区根目录创建以题号命名的文件夹:`/`。 - 若文件夹不存在,直接创建。 - 若文件夹已存在且非空,先请求用户确认是否清空;确认后删除内容并保持空文件夹。 2. **读取题面(Chrome DevTools MCP)** - 打开题目URL并等待页面加载完成。 - 使用页面快照或脚本评估获取题面主体文本: - 优先抓取页面主内容区域(常见为 `main`、`article`、或含“题目描述/输入格式/输出格式/样例”文本的容器)。 - 无法精准定位时,回退使用 `document.body.innerText`,再按标题/小节进行整理。 - 需要确保包含题目标题、描述、输入输出、样例与提示(如存在)。 3. **写入Markdown** - 在题号文件夹中创建 `problem.md`。 - 内容结构: - 标题:`# <题号> <题目标题>` - URL:`原始URL` - 题面正文分节整理(保留原有小节标题)。 4. **编写C++解答** - 在题号文件夹中创建 `solution.cpp`。 - 使用 C++11 标准,包含必要头文件与 `main()`。 - 依据题意实现可通过的解法,并在顶部用简短注释说明思路与复杂度。 ## 输出约束 - 仅创建 `problem.md` 与 `solution.cpp`,不生成额外文件。 - 保持文件夹为空创建流程的前置步骤,先建目录再抓取题面。