Welcome to the world of algorithms! 🌏
这里是 [XUNRANA] 的算法竞赛代码仓库。 本项目记录了我的算法刷题之路,包含了在各大 OJ (Online Judge) 上的解题代码、比赛复盘以及个人整理的算法模板。
主要包含 C++ 实现的算法代码,面向 ICPC/CCPC/Codeforces 等算法竞赛。
仓库目前按照 OJ 平台及比赛类型进行分类归档:
XCPC 是作者用于记录算法练习与比赛解题的仓库,主要保存来自 Codeforces、Atcoder、Luogu、HDU 等平台的题解代码与个人模板。仓库以平台/比赛/题目为单位分类,方便复盘与检索。
目标受众:算法学习者、竞赛选手、想看高质量题解的读者。
仓库按照平台与比赛归类,示例目录结构:
XCPC/
├── 00 Codeforces/ # Codeforces 比赛代码 (Div.1 - Div.4)
├── 01 Atcoder/ # Atcoder 比赛代码
├── 02 Luogu/ # Luogu 题目与练习
├── 04 HDU/ # HDU 题目
├── 12 XCPC模板/ # 常用模板与工具代码
├── .vscode/ # 编辑器配置
└── README.md # 项目说明
- 项目简介与目录结构
- 如何运行示例代码与编译(Windows / Linux / WSL)
- 代码文件头注释规范(题目链接 / 标签 / 难度 / 状态)
- 统计与标签维护说明(
problems.csv或tags.json) - 如何贡献(提交规范、PR 流程、命名规则)
在 Windows 下使用 VS Code 和 MinGW 编译单个 C++ 文件示例:
:: 在仓库中打开终端并运行(示例)
cd "00 Codeforces/1000 div2 01.22"
g++ -std=c++17 -O2 A.cpp -o A.exe
.\\A.exe若在 Linux / WSL:
cd "00 Codeforces/1000 div2 01.22"
g++ -std=c++17 -O2 A.cpp -o A
./A在每个题目文件顶部加入统一注释,便于检索与统计,例如:
// Problem: 1000A - Example Problem
// Link: https://codeforces.com/contest/1000/problem/A
// Difficulty: easy
// Tags: math, implementation
// Status: AC将上述信息同步到问题数据库(problems.csv / tags.json),便于后续统计。
- 使用
problems.csv或tags.json存储题目信息(id, title, link, tags, difficulty, status)。 - 编写一个小脚本生成统计(题目数、按标签分布、AC 率等),并将其纳入 CI(可选)。
示例 problems.csv 列:
file,id,title,link,tags,difficulty,status
00 Codeforces/1000 div2 01.22/A.cpp,1000A,Example,https://...,math;greedy,easy,AC
贡献流程建议:
- Fork 仓库并新建分支
feature/<platform>-<contest>-<id>。 - 在对应目录添加代码文件,文件名请保持与题目编号/字母一致(示例:
1000A.cpp或A.cpp)。 - 在文件头添加注释模板并在
problems.csv(或tags.json)中添加条目。 - 提交 PR,描述改动与来源链接。
代码风格建议:
- 保持可读性,适当添加注释;竞赛模板可使用
#include <bits/stdc++.h>,但库/项目代码请避免全包含。
12 XCPC模板/ 中包含常用算法模板(图论、数据结构、字符串处理、数学工具等)。建议为每个模板添加:用途说明、复杂度、示例链接。
- 建议添加
scripts/:包含统计脚本generate_stats.py、批量编译脚本build_all.sh。 - 可在 GitHub Actions 中添加工作流,自动运行统计并在 PR 检查编译错误。
本仓库默认使用 MIT 许可证(如需更改,请添加 LICENSE 文件)。