Skip to content

Repository files navigation

 ____________________
___________________ __________________ /___(_)_ /___(_)____________
_ ___/ __ \_ __ `__ \__ __ \ _ \ __/_ /_ __/_ /_ __ \_ __ \
/ /__ / /_/ / / / / / /_ /_/ / __/ /_ _ / / /_ _ / / /_/ / / / /
\___/ \____//_/ /_/ /_/_ .___/\___/\__/ /_/ \__/ /_/ \____//_/ /_/
/_/

Competition

个人算法竞赛(OI)代码仓库,记录信息学竞赛中遇到的题目及对应题解。

License: MITLicense: AGPL-3.0


目录结构

Competition/
├── LICENSE # MIT 许可证(适用于 source/ templates/ documents/)
├── LICENSE.AGPL # AGPL-3.0 许可证(适用于 website/)
├── LICENSE.md # 许可证详细说明
├── README.md # 本文件
├── .gitignore
├── .clang-format # C++ 代码格式化配置
│
├── source/ # 题解代码(按来源分类)
│ ├── competitions/ # 正式竞赛
│ │ ├── coci/2006/ # 克罗地亚公开信息学竞赛
│ │ ├── csp/ # 中国 CSP 认证
│ │ ├── noi/2003/ # 全国青少年信息学奥林匹克
│ │ ├── noip/ # 全国青少年信息学奥林匹克联赛
│ │ └── usaco/ # 美国计算机奥林匹克
│ ├── districts/ # 地区训练
│ │ └── cq/cqyc/ # 重庆育才中学
│ └── website/ # OJ 平台题目
│ ├── www.luogu.com.cn/ # 洛谷
│ │ └── utils/ # 洛谷辅助工具
│ │ ├── script-cat/ # 用户脚本「洛谷助手」
│ │ └── chromium-ext-auto-submit/ # 浏览器扩展「洛谷自动提交」
│ ├── ybt.ssoier.cn/ # 一本通
│ ├── oj.crequency.cn/ # 云矩创频 OJ
│ ├── cjsoj.cn/ # 常菁数 OJ
│ ├── xiaopangoj.com/ # 小胖 OJ
│ └── www.51nod.com/ # 51Nod
│
├── templates/ # 算法模板(BIT、线段树、KMP、高精度等)
│
├── documents/ # 学习文档
│ ├── oier-notices.md # OIer 考前注意事项(101+ 条)
│ ├── fragments.md # 算法片段备忘
│ └── OI.xmind # OI 知识体系思维导图
│
├── website/ # 题解网站项目(开发中)
│ └── scripts/ # 爬虫脚本
│ ├── luogu.py # 洛谷题目爬虫
│ ├── ybt.py # 一本通题目爬虫
│ └── README.md # 脚本使用说明
│
└── utils/ # 工具脚本
├── compile-all.sh # 批量编译脚本
└── run.sh # 编译运行脚本(含 --install 安装 runcpp 别名)

文件命名规范(OJ 题目)

每道 OJ 题目由三个文件组成,存放在对应平台的目录下:

后缀用途示例
.cppAC 题解代码P1001.cpp
.exe编译产物(Windows)P1001.exe
.out编译产物(Linux / macOS)P1001.out
.problem.md题目描述(爬虫生成)P1001.problem.md
.explain.md题解说明(手动编写)P1001.explain.md
<pid>_<did>.in测试输入数据P1098_6.in
<pid>_<did>.ans测试输出数据P1098_6.ans

覆盖平台

平台目录题目数
洛谷www.luogu.com.cn/596
一本通ybt.ssoier.cn/153
育才中学cq/cqyc/77
USACOusaco/28
COCIcoci/2006/7
NOIPnoip/24
CSPcsp/3
常菁数 OJcjsoj.cn/31
云矩创频 OJoj.crequency.cn/19
小胖 OJxiaopangoj.com/16
51Nod OJwww.51nod.com/15

算法覆盖

数据结构(线段树、树状数组、并查集)、动态规划(背包、区间、状压、数位、树形 DP)、 图论(最短路、网络流、二分图、拓扑排序)、字符串(KMP、哈希)、 数学(数论、组合、容斥、博弈)、搜索(DFS/BFS、回溯)、贪心、分治、计算几何。

编译

# 单文件
g++ -std=c++17 -O2 source/website/www.luogu.com.cn/P1001.cpp
# 编译并运行(自动生成 .out 产物并执行)
bash utils/run.sh source/website/www.luogu.com.cn/P1001.cpp
# 安装 runcpp 别名(写入 ~/.bashrc / ~/.zshrc 等)
bash utils/run.sh --install
# 安装后可直接使用: runcpp source/website/www.luogu.com.cn/P1001.cpp# 批量编译
bash utils/compile-all.sh # 顺序编译全部
bash utils/compile-all.sh -j4 # 4 线程并行
bash utils/compile-all.sh --dry-run # 仅列出文件

用户脚本

洛谷助手 是一个运行在 ScriptCat 上的用户脚本,用于增强洛谷题目列表页的交互体验。

功能: 在洛谷题目列表页(/problem/list)页面右下角添加悬浮按钮,点击后弹出面板展示:

  • 已通过 题目编号列表 + 一键复制
  • 未通过 题目编号列表 + 一键复制
  • 未做 题目编号列表 + 一键复制

使用方式:

  1. 安装用户脚本管理器(ScriptCat 或 Tampermonkey)
  2. 访问 Greasy Fork 页面 安装脚本
  3. 打开任意洛谷题目列表页,即可看到右下角的悬浮按钮

开发:

cd source/website/www.luogu.com.cn/utils/script-cat
npm install
npm run dev # 开发模式(热更新)
npm run build # 构建产物至 dist/

浏览器扩展

洛谷自动提交 是一个 Chrome MV3 扩展项目,通过终端 → 本地服务 → 浏览器三组件协作,实现代码批量在线评测的自动化。

架构:

CLI (终端) --HTTP--> Daemon (后台服务) --WebSocket--> Extension (浏览器)
组件位置端口职责
luogu-cli终端扫描代码文件、提交任务、展示结果
luogu-daemon后台守护进程HTTP :9527, WS :9528任务队列调度、SQLite 持久化、桥接扩展
ExtensionChrome 浏览器页面自动化(填代码、点提交)、结果采集

使用实例:

# 启动后台服务cd source/website/www.luogu.com.cn/utils/chromium-ext-auto-submit
pnpm --filter @luogu-auto/daemon dev
# 安装 CLI 别名(一次性)
./utils/luogu.sh --install
# or execute: eval "alias luogu='/home/dynesshely/projects/dynesshely/Competition/utils/luogu.sh'"# 单题提交
luogu submit source/website/www.luogu.com.cn/P/1000-1049/P1000.cpp
# 批量提交(含 Markdown 结果汇总)
luogu batch source/website/www.luogu.com.cn/ --export markdown
# 批量提交指定范围
luogu batch source/website/www.luogu.com.cn/P/1400-1499/ --include 'P14(0[2-9]|1[0-9])'

开发:

cd source/website/www.luogu.com.cn/utils/chromium-ext-auto-submit
pnpm install
pnpm build # 构建全部 4 个包

社区

Contributors

Star History Chart

许可证

  • source/templates/documents/MIT — 自由使用、修改、分发,需保留版权声明
  • website/utils/AGPL-3.0 — 允许使用和修改,但衍生作品及网络服务必须开源
  • .problem.md 题目描述:版权归各 OJ 平台及原题作者所有

详细的适用范围与例外说明请参阅 LICENSE.md

About

All my solution for examination questions collection.

Topics

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages