基础算法
位运算
- 补码表示法,理解c++无符号,有符号整数在计算机中的存储方式。
- 各种按位运算,包括取位,置位,移位等,以及一些常见技巧。
- 快速幂,64位整数乘法。
- 二进制状态压缩,使用二进制数对状态进行压缩,提取的方法。
- 位运算不进位的特点以及各位之间的独立性。
递归与递推
- 能想象问题“状态空间”,理解各种基本算法其实是对状态空间的遍历与映射。
- 递推边界,目标,递推公式的发现与设计。
- 理解递归思想,子问题,递归边界,回溯时还原现场。
- 递归实现常见规模的状态空间的遍历。
- 分治思想,对问题进行划分,递归,再合并。
- 分形,主要对子问题的划分,提取,抽象。
- 递归的机器实现,转化成非递归的通用方法。
前缀和与差分
- 一维,二维前缀和的递推与应用。
- 差分序列的定义与应用。
二分
- 整数集合二分法,实数域二分法。
- 单峰函数的三分法。
- 二分答案,把求解转化为判定。
排序
- 各种排序算法,插入、选择、冒泡、堆、归并、快速、计数、基数、桶排序
- 离散化
- 中位数相关问题,包括货仓选址,环形均分纸牌,动态维护中位数等。
- 求第 k 大数的O(N)算法。
- 逆序对相关问题,使用归并排序求逆序对。
倍增
- 序列上的倍增算法及其应用
- RMQ-ST 算法
贪心
- 贪心思想及其证明手段,主要通过较多题目开拓视野,归纳总结。