目录
第一章 从零开始 8
1.1机试分析 8
1.2 IDE的选择与评测结果 10
1.3 DreamJudge的使用 11
1.4输入输出技巧 12
1.5头文件技巧 15
1.6数组使用技巧 16
1.7审时度势 — 复杂度与是否可做 19
1.8 C++ STL的使用 21
1.9多组输入的问题 27
第二章 入门经典 29
2.1 简单模拟 30
2.2 进制转换类问题 32
2.3 排版类问题 37
2.4 日期类问题 42
2.5 字符串类问题 45
2.6 排序类问题 47
2.7 查找类问题 54
2.8 贪心类问题 61
2.9 链表类问题 65
第三章 数学 68
3.1 同模余定理 69
3.2 最大公约数(GCD) 72
3.3 最小公倍数(LCM) 74
3.4 斐波那契数列 75
3.5 素数判定 76
3.6 素数筛选 78
3.7 分解素因数 81
3.8 二分快速幂 83
3.9 常见数学公式总结 85
3.10 规律神器OEIS 87
第四章 高精度问题 89
4.1 Python解法 90
4.2 Java解法 91
4.3 C/C++解法 92
第五章 数据结构 93
5.1 栈的应用 94
5.2 哈夫曼树 96
5.3 二叉树 102
5.4 二叉排序树 111
5.5 hash算法 114
5.6 前缀树 115
第六章 搜索 121
6.1 暴力枚举 122
6.2 广度优先搜索(BFS) 124
6.3 递归及其应用 127
6.4 深度优先搜索(DFS) 130
6.5 搜索剪枝技巧 135
6.6 终极骗分技巧 138
第七章 图论 139
7.1 理论基础 140
7.2 图的存储 145
7.3 并查集 148
7.4 最小生成树问题 151
7.5 最短路径问题 155
7.6 拓扑排序 162
第八章 动态规划 165
8.1 递推求解 166
8.2 最大子段和 168
8.3 最长上升子序列(LIS) 170
8.4 最长公共子序列(LCS) 174
8.5 背包类问题 176
8.6 记忆化搜索 179
8.7 字符串相关的动态规划 182
1