目 录
I
目 录
标题上的符号 :
1. !
:表示读者应该熟练掌握这些内容,并且在竞赛时能很快地写出来。换句话说就是应该背下来。
2. *
:表示内容在
NOIP
中很少涉及,或者不完全适合
NOIP
的难度。
3. #
:表示代码存在未更正的错误,或算法本身存在缺陷。
前 言
.....................................................................
1
目 录
.....................................................................
I
第一单元
C++
语言基础
...................................
1
1.1
程序结构
.......................................................
1
1.2
数据类型
.......................................................
4
1.3
运算符
..........................................................
6
1.4
函数
..............................................................
8
1.5
输入和输出
!
................................................
9
1.6
其他常用操作
!
..........................................
10
1.7
字符串操作
!
..............................................
13
1.8
文件操作
!
..................................................
13
1.9
简单的算法分析和优化
............................
14
1.10
代码编辑器
..............................................
16
第二单元 基础算法
........................................
17
2.1
经典枚举问题
............................................
17
2.2
火柴棒等式
................................................
18
2.3
梵塔问题
....................................................
19
2.4
斐波那契数列
............................................
19
2.5
常见的递推关系
!
......................................
20
2.6
选择客栈
....................................................
22
2.7 2
k
进制数
....................................................
23
2.8 Healthy Holsteins
...........................
24
2.9
小结
............................................................
25
第三单元 搜索
................................................
27
3.1 N
皇后问题
.................................................
27
3.2
走迷宫
........................................................
29
3.3 8
数码问题
.................................................
31
3.4
埃及分数
....................................................
34
3.5 Mayan
游戏
...............................................
36
3.6
预处理和优化
............................................
40
3.7
代码模板
....................................................
41
3.8
搜索题的一些调试技巧
............................
43
3.9
小结
............................................................
44
第四单元 贪心算法
........................................
46
4.1
装载问题
....................................................
46
4.2
区间问题
....................................................
46
4.3
删数问题
....................................................
47
4.4
工序问题
....................................................
47
4.5
种树问题
....................................................
47
4.6
马的哈密尔顿链
........................................
47
4.7
三值 的 排序
................................................
49
4.8
田忌赛马
....................................................
50
4.9
小结
............................................................
50
第五单元 分治算法
........................................
51
5.1
一元三次方程求解
....................................
51
5.2
快速幂
........................................................
51
5.3
排序
............................................................
51
5.4
最长非降子序列
........................................
53
5.5
循环赛日程表问题
....................................
53
5.6
棋盘覆盖
....................................................
54
5.7
删除多余括号
............................................
55
5.8
聪明的质监员
............................................
56
5.9
模板
............................................................
58
5.10
小结
..........................................................
59
第六单元 动态规划
........................................
60
6.1
导例:数字三角形
....................................
60
6.2
区间问题:石子合并
................................
63
6.3
坐标问题
....................................................
65
6.4
背包问题
....................................................
67
6.5
编号问题
....................................................
67
6.6
递归结构问题
............................................
68
6.7 DAG
上的最短路径
....................................
71
6.8
树形动态规划
*
..........................................
72
6.9
状态压缩类问题:过河
............................
74
6.10 Bitonic
旅行
........................................
76
6.11
小结
..........................................................
77
第七单元 背包专题
........................................
78
7.1
部分背包问题
............................................
78
7.2 0/1
背包问题
!
..........................................
78
7.3
完全背包问题
............................................
79
7.4
多重背包问题
............................................
79
7.5
二维费用的背包问题
................................
80
7.6
分组的背包问题
........................................
81
7.7
有依赖的背包问题
....................................
81
7.8
泛化物品
....................................................
81
7.9
混合背包问题
............................................
82
7.10
特殊要求
..................................................
82
7.11
背包问题的搜索解法
..............................
83
7.12
子集和问题
..............................................
84
第八单元 排序算法
........................................
85
8.1
常用排序算法
............................................
85
8.2
简单排序算法
............................................
87
8.3
线性时间排序
............................................
88
8.4
使用二叉树的排序算法
*
..........................
89
8.5
小结
............................................................
90
第九单元 基本数据结构
................................
91