Skip to content

About

面向 ACM 新手的 C++ 自学笔记:完整正文、过程图、带页码 PDF 与 111 份练习题解。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

C++/ACM 自学笔记

这份笔记面向刚开始学习 C++ 和 ACM 算法的读者。讲解从具体问题出发,配有手算、过程图和带注释的代码;序言按不同基础安排阅读路线。

阅读入口 内容
在线阅读 按章节阅读,搜索主题和题号,点击放大图解
完整 Markdown 笔记 v5.0,可下载后用 Typora 阅读
PDF 下载 462 页,保留 Typora 主题与代码高亮,目录和每页均有页码
练习题解 107 道在线题目与 4 项面向对象练习,共 111 份解答

下载仓库后,把 Markdown 和同目录的 C艹学习笔记.assets 一起保存,插图就能随正文显示。完整笔记包括序言、C++ 语法基础、面向对象、解题方法论、批量输入与大整数、数据结构与算法、后记及附录。

(一) 阅读方法

先按序言选择适合自己的路线,跟着例子手算,再做对应练习。遇到推不下去的一步时,查题解中的分析或过程图;已经写出程序时,用同一份输入找出自己与参考过程第一次不同的地方。

题解按章节和题号整理,同一道题在不同章节出现时共用一份解答。每份参考程序都可以单独编译,统一使用序言中的竞赛模板,以 GNU C++17 编译。读懂后关掉答案再写一遍,把做错的输入留下来用于复习。

(二) 按章节查阅

题解章节 题目数
语言基础与条件建模 16
STL 容器与操作模拟 20
方法选择与事件模拟 4
大整数四则运算 5
枚举、前缀和、差分与排序 6
基础数论与快速幂 6
双指针、窗口与二分 7
贪心策略 5
递归、回溯、DFS、BFS 与记忆化 12
动态规划 14
树、并查集与图论 12
面向对象的四项练习 4

(三) 按题号查阅

在本页用 Ctrl+F 查找题号。点击题名查看解答,点击“原题”回到评测平台。

题号 题解 所属章节 原题
P1001 A+B Problem 语言基础与条件建模 原题
P5703 苹果采购 语言基础与条件建模 原题
P5710 数的性质 语言基础与条件建模 原题
P1100 高低位交换 语言基础与条件建模 原题
P5712 Apples 语言基础与条件建模 原题
P5721 数字直角三角形 语言基础与条件建模 原题
P5723 质数口袋 语言基础与条件建模 原题
P1428 小鱼比可爱 语言基础与条件建模 原题
P5732 杨辉三角 语言基础与条件建模 原题
P1554 梦中的统计 语言基础与条件建模 原题
CF4-A Watermelon 语言基础与条件建模 原题
P5711 闰年判断 语言基础与条件建模 原题
P5709 苹果和虫子 语言基础与条件建模 原题
P1046 陶陶摘苹果 语言基础与条件建模 原题
P5717 三角形分类 语言基础与条件建模 原题
P1085 不高兴的津津 语言基础与条件建模 原题
P5733 自动修正 STL 容器与操作模拟 原题
P1427 小鱼的数字游戏 STL 容器与操作模拟 原题
P1308 统计单词数 STL 容器与操作模拟 原题
P1093 奖学金 STL 容器与操作模拟 原题
P1177 排序 STL 容器与操作模拟 原题
P1059 明明的随机数 STL 容器与操作模拟 原题
P1160 队列安排 STL 容器与操作模拟 原题
P1449 后缀表达式 STL 容器与操作模拟 原题
P1241 括号序列 STL 容器与操作模拟 原题
P1996 约瑟夫问题 STL 容器与操作模拟 原题
P1540 机器翻译 STL 容器与操作模拟 原题
CF4-C Registration System STL 容器与操作模拟 原题
P5266 学籍管理 STL 容器与操作模拟 原题
P2234 营业额统计 STL 容器与操作模拟 原题
P3370 字符串哈希 STL 容器与操作模拟 原题
P3378 堆 STL 容器与操作模拟 原题
P1631 序列合并 STL 容器与操作模拟 原题
P1886 滑动窗口 STL 容器与操作模拟 原题
P1440 求 m 区间内的最小值 STL 容器与操作模拟 原题
P2073 送花 STL 容器与操作模拟 原题
P1102 A-B 数对 方法选择与事件模拟 原题
CF702-B Powers of Two 方法选择与事件模拟 原题
P2058 海港 方法选择与事件模拟 原题
P1065 作业调度方案 方法选择与事件模拟 原题
P1601 高精度加法 大整数四则运算 原题
P2142 高精度减法 大整数四则运算 原题
P1303 A*B Problem 大整数四则运算 原题
P1480 A/B Problem 大整数四则运算 原题
P1932 大整数五种运算 大整数四则运算 原题
P2089 烤鸡 枚举、前缀和、差分与排序 原题
P8218 求区间和 枚举、前缀和、差分与排序 原题
P2367 语文成绩 枚举、前缀和、差分与排序 原题
P3397 地毯 枚举、前缀和、差分与排序 原题
P1908 逆序对 枚举、前缀和、差分与排序 原题
P1496 火烧赤壁 枚举、前缀和、差分与排序 原题
P1029 最大公约数和最小公倍数问题 基础数论与快速幂 原题
P3383 线性筛素数 基础数论与快速幂 原题
P1075 质因数分解 基础数论与快速幂 原题
P1226 快速幂 基础数论与快速幂 原题
CF742-A Arpa’s hard exam and Mehrdad’s naive cheat 基础数论与快速幂 原题
P1217 回文质数 基础数论与快速幂 原题
CF279-B Books 双指针、窗口与二分 原题
P1638 逛画展 双指针、窗口与二分 原题
P1182 数列分段 Section II 双指针、窗口与二分 原题
P1873 砍树 双指针、窗口与二分 原题
P2678 跳石头 双指针、窗口与二分 原题
P3382 三分 双指针、窗口与二分 原题
P2249 查找 双指针、窗口与二分 原题
CF996-A Hit the Lottery 贪心策略 原题
P1803 线段覆盖 贪心策略 原题
P1090 合并果子 贪心策略 原题
P2240 部分背包问题 贪心策略 原题
P1016 旅行家的预算 贪心策略 原题
P1036 选数 递归、回溯、DFS、BFS 与记忆化 原题
P1219 八皇后 递归、回溯、DFS、BFS 与记忆化 原题
P1605 迷宫 递归、回溯、DFS、BFS 与记忆化 原题
P5318 查找文献 递归、回溯、DFS、BFS 与记忆化 原题
P1451 求细胞数量 递归、回溯、DFS、BFS 与记忆化 原题
P1596 湖计数 递归、回溯、DFS、BFS 与记忆化 原题
P1162 填涂颜色 递归、回溯、DFS、BFS 与记忆化 原题
P1141 01 迷宫 递归、回溯、DFS、BFS 与记忆化 原题
P1443 马的遍历 递归、回溯、DFS、BFS 与记忆化 原题
P1135 奇怪的电梯 递归、回溯、DFS、BFS 与记忆化 原题
P1434 滑雪 递归、回溯、DFS、BFS 与记忆化 原题
P1242 新汉诺塔 递归、回溯、DFS、BFS 与记忆化 原题
P1255 数楼梯 动态规划 原题
P1115 最大子段和 动态规划 原题
P1387 最大正方形 动态规划 原题
P1020 导弹拦截 动态规划 原题
P1439 两个排列的最长公共子序列 动态规划 原题
P1435 回文字串 动态规划 原题
P2758 编辑距离 动态规划 原题
P1048 采药 动态规划 原题
P1049 装箱问题 动态规划 原题
P1616 疯狂的采药 动态规划 原题
P1164 小 A 点菜 动态规划 原题
P2842 纸币问题 1 动态规划 原题
P1002 过河卒 动态规划 原题
P2679 子串 动态规划 原题
P4913 二叉树深度 树、并查集与图论 原题
P3884 二叉树问题 树、并查集与图论 原题
P3367 并查集 树、并查集与图论 原题
P1551 亲戚 树、并查集与图论 原题
B3643 图的存储 树、并查集与图论 原题
P1330 封锁阳光大学 树、并查集与图论 原题
P3371 单源最短路径(弱化版) 树、并查集与图论 原题
P4779 单源最短路径(标准版) 树、并查集与图论 原题
B3647 Floyd 树、并查集与图论 原题
B3644 拓扑排序/家谱树 树、并查集与图论 原题
P1807 最长路 树、并查集与图论 原题
P3366 最小生成树 树、并查集与图论 原题
OOP1 学生信息排序 面向对象的四项练习 自拟练习
OOP2 成绩类的修改检查 面向对象的四项练习 自拟练习
OOP3 通过 Shape 调用 Triangle 面积 面向对象的四项练习 自拟练习
OOP4 二叉树节点的所有权 面向对象的四项练习 自拟练习

(四) 编译与本地核对

例如编译某一道题:

# 编译独立源文件,再让程序从标准输入读取本地数据。
g++ -std=gnu++17 -O2 code/P1182.cpp -o solution
./solution < input.txt

运行仓库中的 python tests/verify.py 会编译全部参考实现、核对题面样例与手算例子。汉诺塔和拓扑排序存在多种合法输出,验证程序分别检查移动是否合法且步数最少,以及所有前驱是否先于后继输出。

(五) 从答案回到独立解题

做完一题后,记下自己卡住的具体步骤。比如迷宫回溯时忘了撤销标记,就拿一张小地图重新手算返回过程,再独立完成一道相近的题。复习时先运行之前留下的错误输入,看看现在能否解释当时的问题。

(六) 更新日志

时间 更新内容
2025.10~2026.1 手打第一版。
2026.10.7 使用 GPT-6.1-Sol 整理结构,补充 C++ 基本语法,更新为第二版。
2026.10.8 更新第三版:修复若干表述不清晰的地方,添加页码,重新整理标题层级,将容器统一归入 STL 章节。
2026.10.8~10.9 详细扩充第三章,更新为第四版。
2026.10.9 添加后记和学习路线,建立 GitHub Pages 与练习题答案仓库。

About

面向 ACM 新手的 C++ 自学笔记:完整正文、过程图、带页码 PDF 与 111 份练习题解。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages