# algorithm-practice
**Repository Path**: readant/algorithm-practice
## Basic Information
- **Project Name**: algorithm-practice
- **Description**: Personal algorithm practice repo. Cover LeetCode, Luogu, basic data structures, DP, graph theory, number theory and common algorithm templates. Each problem contains analysis, code comments and time/space complexity analysis. Continuously updated.个人算法练习仓库。涵盖 LeetCode、洛谷题库、基础数据结构、动态规划、图论、数论等内容,整理通用可复用算法模板。附带思路解析、代码注释与时空复杂度分析,持续更新刷题记录。
- **Primary Language**: C++
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-23
- **Last Updated**: 2026-09-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Algorithm Practice
竞赛向算法训练仓 · 蓝桥杯冲成绩,逐步够到 ACM 门槛
算法没有捷径,但有方法。
主路径是竞赛能力栈,不是无目的刷题:
按蓝桥杯块次推进,题解归档 + 三层知识库服务当前块;
满足开轨条件后再进入 ACM 门槛轨。
语言:C++ 主 · Python 副 · C 仅对照 · Java 不在考虑
---
## 从这里开始
**每日入口:[COMPETE.md](COMPETE.md)**(竞赛总控:当前块、导航、进度)
| 路径 | 状态 | 入口 |
| :-- | :-- | :-- |
| **Level 1 · 蓝桥杯** | 主路径 | [竞赛轨/蓝桥杯/主线.md](竞赛轨/蓝桥杯/主线.md) |
| 进度打勾 | 唯一竞赛进度表 | [竞赛轨/蓝桥杯/进度.md](竞赛轨/蓝桥杯/进度.md) |
| **Level 2 · ACM 门槛** | 未开轨(有文档) | [竞赛轨/ACM门槛/00-这是什么比赛.md](竞赛轨/ACM门槛/00-这是什么比赛.md) |
| 讲义 / 知识库 | 服务当前块 | [学习模块/](学习模块/README.md) |
| 题解 | 做完回写 | [题解归档/](题解归档/洛谷/) |
| LeetCode | **副路径**(专题加练) | [题解归档/LeetCode/](题解归档/LeetCode/) |
---
## 特色亮点
| 维度 |
普通刷题仓库 |
本仓库 |
| 定位 |
题解堆积或纯教程 |
竞赛训练仓:蓝桥主线 + ACM 门槛清单 |
| 语言 |
多语言并列维护 |
C++ 主 / Python 副 / C 对照;Java 不在考虑 |
| 代码 |
只有 AC 代码 |
竞赛默认 solution.cpp;可选 Python;C 按需对照 |
| 思路 |
跳过或一笔带过 |
分步骤拆解 + 易错点 + 踩坑归档 |
| 知识 |
散落在各题中 |
三层知识库 + 竞赛轨主线/进度 |
| 进度 |
用入门题单总数压迫 |
以「当前块 + 真题」为准,入门只补洞 |
---
## 仓库结构
```
algorithm-practice/
├── COMPETE.md ← 每日竞赛总控
├── 竞赛轨/
│ ├── 蓝桥杯/ ← Level 1 主路径(主线 + 进度)
│ └── ACM门槛/ ← Level 2 门禁与阶梯(默认未开轨)
│
├── 学习模块/
│ ├── 01-参考层/ ← 速查卡
│ ├── 02-学习层/ ← 讲义(备赛块 / 深造轨)
│ └── 03-实战层/ ← 模板 + 踩坑
│
├── 题解归档/
│ ├── 洛谷/ ← 主练习归档
│ ├── 蓝桥杯/ ← 真题强化 24
│ ├── 校赛与CF/ ← Level2 开轨后
│ ├── LeetCode/ ← 副路径
│ ├── 牛客网/ AcWing/ ← 按需归档
│ └── …
│
└── README.md
```
### 学习层(服务竞赛块)
```
02-学习层/01-C++/
├── 01-C++基础语法/ ← 语法底座(欠账再补)
├── 02-数据结构/ ← 备赛:A1 STL 工具箱;深造:教材轨
├── 03-基础算法体系/ ← 暴力/排序/二分/贪心/搜索 + 技巧 + 高精度
└── 04-进阶算法体系/ ← DP、图论、数论(ACM 轨 A–D 对应)
```
### 语言策略
| 语言 | 定位 | 新题解 | 说明 |
| :-- | :-- | :-- | :-- |
| **C++** | **主语言** | 默认必须 | 讲义 / 模板 / 竞赛提交 |
| **Python** | 副语言 | 可选对照 | 不作竞赛主提交 |
| **C** | 对照 | 按需 | 从 C++ 思路调整,不单独成线 |
| **Java** | **不在考虑** | 不再新增 | 历史存档可留;参考层 `04-Java` 不再导航 |
```
01-参考层/
├── 00-通用规范/
├── 01-C++/ ← 主
├── 02-Python/ ← 副
└── 03-C/ ← 对照
```
---
## 竞赛进度(摘要)
完整表:[竞赛轨/蓝桥杯/进度.md](竞赛轨/蓝桥杯/进度.md)
| 项 | 状态 |
| :-- | :-- |
| 当前块 | **块5 · STL(A1 工具箱)** |
| 真题强化 24 | 0 / 24(未系统开刷) |
| ACM 门槛轨 | 未开轨 |
| 洛谷入门(参考) | 约 40/104 — **补洞用,不作主 KPI** |
### 洛谷入门参考表
| 题单 | 已完成 | 总题数 | 竞赛用法 |
| :----- | ------: | ------: | :-- |
| 入门1 - 顺序结构 | 6 | 15 | 语法底座 |
| 入门2 - 分支结构 | 1 | 18 | 只补竞赛题型 |
| 入门3 - 循环结构 | 0 | 21 | 只补竞赛题型 |
| 入门4 - 数组 | 19 | 20 | 块1/模拟 |
| 入门5 - 字符串 | 11 | 15 | 块3 |
| 入门6 - 函数与结构体 | 3 | 15 | 块4(sort/struct 优先) |
---
## 精选题解
> 每道题的题解包含:题目描述 → 思路拆解 → **C++ 主解** →(可选 Python/C)→ 易错点 → 算法总结 → 知识点关联
---
## 每题文件规范
### 标准命名
| 文件 | 说明 |
| :----- | :----- |
| `题解.md` | 题目描述 + 解题笔记 + 易错点 + 算法总结 |
| `solution.cpp` | **主解法(竞赛默认,C++)** |
| `solution.py` | 可选副语言对照(Python) |
| `solution.c` | 可选,按 C++ 思路对照 |
| ~~`solution.java`~~ | **不再新增**(历史存档可留) |
| `drafts/` | 草稿文件夹(个人尝试,本地为主) |
### 多解法命名
| 类型 | 命名规则 | 说明 |
|:-----|:---------|:-----|
| 主解法 | `solution.cpp` | 推荐解法,竞赛与教学默认 |
| 副语言 | `solution.py` / `solution.c` | 对照用;C 从 C++ 调整 |
| 其他解法 | `暴力枚举.cpp` / `贪心法.cpp` 等 | 解法特征命名,C++ |
```
P3741_小果的键盘/
├── solution.cpp ← 主解法
├── 暴力枚举.cpp ← 其他解法
└── 题解.md
```
竞赛题解落点:
- 蓝桥真题 → `题解归档/蓝桥杯/真题强化24/`
- 洛谷 → `题解归档/洛谷/`
- 校赛/CF(开轨后)→ `题解归档/校赛与CF/`
---
## Commit 规范
| 前缀 | 说明 |
| :----- | :----- |
| `feat:` | 新增题目解法 |
| `fix:` | 修复代码或补充边界处理 |
| `docs:` | 更新题解、算法总结、竞赛轨/知识库 |
| `refactor:` | 重构代码实现 |
---
## 已解题目索引
### 入门1 - 顺序结构
| 题号 | 题目 | 语言 | 题解 |
|:-----|:-----|:-----|:-----|
| P1000 | 超级玛丽游戏 | C++ | [题解](题解归档/洛谷/入门1-顺序结构/P1000_超级玛丽游戏/题解.md) |
> 入门1 共 15 题,已完成 6 题(含未建题解文件的题目)
### 入门2 - 分支结构
> 入门2 共 18 题,已完成 1 题(待补充题解)
### 入门3 - 循环结构
> 入门3 共 21 题,待开始(竞赛上只补挡路题型)
### 入门4 - 数组
| 题号 | 题目 | 语言 | 题解 |
| :----- | :----- | :----- | :----- |
| P1047 | 校门外的树 | C++(历史含对照) | [题解](题解归档/洛谷/入门4-数组/P1047_校门外的树/题解.md) |
| P1161 | 开灯 | C++ | [题解](题解归档/洛谷/入门4-数组/P1161_开灯/题解.md) |
| P1205 | Transformations | C++ | [题解](题解归档/洛谷/入门4-数组/P1205_Transformations/题解.md) |
| P1319 | 压缩技术 | C++ | [题解](题解归档/洛谷/入门4-数组/P1319_压缩技术/题解.md) |
| P1320 | 压缩技术(续集版) | C++ | [题解](题解归档/洛谷/入门4-数组/P1320_压缩技术(续集版)/题解.md) |
| P1427 | 小鱼的数字游戏 | C++ | [题解](题解归档/洛谷/入门4-数组/P1427_小鱼的数字游戏/题解.md) |
| P1428 | 小鱼比可爱 | C++ | [题解](题解归档/洛谷/入门4-数组/P1428_小鱼比可爱/题解.md) |
| P1554 | 梦中的统计 | C++ | [题解](题解归档/洛谷/入门4-数组/P1554_梦中的统计/题解.md) |
| P1614 | 爱与愁的心痛 | C++ | [题解](题解归档/洛谷/入门4-数组/P1614_爱与愁的心痛/题解.md) |
| P1789 | 插火把 | C++(历史含对照) | [题解](题解归档/洛谷/入门4-数组/P1789_插火把/题解.md) |
| P2141 | 珠心算测验 | C++ | [题解](题解归档/洛谷/入门4-数组/P2141_珠心算测验/题解.md) |
| P2550 | 彩票摇奖 | C++ | [题解](题解归档/洛谷/入门4-数组/P2550_彩票摇奖/题解.md) |
| P2615 | 神奇的幻方 | C++ | [题解](题解归档/洛谷/入门4-数组/P2615_神奇的幻方/题解.md) |
| P5727 | 冰雹猜想 | C++ | [题解](题解归档/洛谷/入门4-数组/P5727_冰雹猜想/题解.md) |
| P5728 | 旗鼓相当的对手 | C++ | [题解](题解归档/洛谷/入门4-数组/P5728_旗鼓相当的对手/题解.md) |
| P5729 | 工艺品制作 | C++ | [题解](题解归档/洛谷/入门4-数组/P5729_工艺品制作/题解.md) |
| P5730 | 显示屏 | C++ | [题解](题解归档/洛谷/入门4-数组/P5730_显示屏/题解.md) |
| P5731 | 蛇形方阵 | C++(历史含对照) | [题解](题解归档/洛谷/入门4-数组/P5731_蛇形方阵/题解.md) |
| P5732 | 杨辉三角 | C++(历史含对照) | [题解](题解归档/洛谷/入门4-数组/P5732_杨辉三角/题解.md) |
### 入门5 - 字符串
| 题号 | 题目 | 语言 | 题解 |
| :----- | :----- | :----- | :----- |
| P1765 | 手机 | C++ | [题解](题解归档/洛谷/入门5-字符串/P1765_手机/题解.md) |
| P1914 | 小书童——凯撒密码 | C++(历史含对照) | [题解](题解归档/洛谷/入门5-字符串/P1914_小书童——凯撒密码/题解.md) |
| P1957 | 口算练习题 | C++ / Python | [题解](题解归档/洛谷/入门5-字符串/P1957_口算练习题/题解.md) |
| P308 | 统计单词数 | C++ | [题解](题解归档/洛谷/入门5-字符串/P308_统计单词数/题解.md) |
| P3741 | 小果的键盘 | C++ | [题解](题解归档/洛谷/入门5-字符串/P3741_小果的键盘/题解.md) |
| P5015 | 标题统计 | C++/Python | [题解](题解归档/洛谷/入门5-字符串/P5015_标准统计/题解.md) |
| P5733 | 自动修正 | C++ | [题解](题解归档/洛谷/入门5-字符串/P5733_自动修正/题解.md) |
| P1125 | 笨小猴 | C++ | [题解](题解归档/洛谷/入门5-字符串/P1125_笨小猴/题解.md) |
| P1321 | 单词覆盖还原 | C++ | [题解](题解归档/洛谷/入门5-字符串/P1321_单词覆盖还原/题解.md) |
| P1597 | 语句解析 | C++ | [题解](题解归档/洛谷/入门5-字符串/P1597_语义解析/题解.md) |
| P5734 | 文件处理软件 | C++ | [题解](题解归档/洛谷/入门5-字符串/P5734_文件处理软件/题解.md) |
### 入门6 - 函数与结构体
| 题号 | 题目 | 语言 | 题解 |
| :----- | :----- | :----- | :----- |
| P5735 | 距离函数 | C++/Python | [题解](题解归档/洛谷/入门6-函数与结构体/P5735_距离函数/题解.md) |
| P5736 | 质数筛 | C++ | [题解](题解归档/洛谷/入门6-函数与结构体/P5736_质数筛/题解.md) |
| P5737 | 闰年展示 | C++ | [题解](题解归档/洛谷/入门6-函数与结构体/P5737_闰年展示/题解.md) |
| P1304 | 哥德巴赫猜想 | C++ | 目录:`P1304_哥德巴赫猜想/` |
| P5739 | 计算阶乘 | C++ | 目录:`P5739_计算阶乘/` |
### 蓝桥 / 其他
| 位置 | 说明 |
| :-- | :-- |
| [题解归档/蓝桥杯/真题强化24/](题解归档/蓝桥杯/真题强化24/README.md) | 真题索引(开刷后打勾) |
| [题解归档/校赛与CF/](题解归档/校赛与CF/README.md) | ACM 轨开轨后 |
| [题解归档/LeetCode/](题解归档/LeetCode/) | 副路径 |
---
## 贡献
欢迎提交 Issue 和 PR。如果你有更好的解法或发现了错误,请不吝指正。学习的路上,我们都是同行者。
## License
本仓库原创内容采用 [MIT License](LICENSE) 授权。
部分内容(题解思路、知识点讲解)参考了开源社区的分享,已在 [资源与致谢](学习模块/资源与致谢.md) 中标注来源。如有侵权,请联系删除。