跳跃表 树状数组 线段树 伸展树静态二叉检索树(POJ2482,POJ2352)
单调队列 单调栈
一致哈希表 并查集
稀疏表 环形缓存 双端队列(常常在动态规划中起到优化状态转移的目的 POJ 2823)
折半枚举 分桶法和平方分割
快速排序 堆排序 二分搜索 尺取法
贪心算法
数的hash 串的hash
哈夫曼树(POJ 3253)
5.1-5.8
搜索:
简单搜索技巧和剪枝(POJ2531,POJ1416,POJ2676,POJ1129)
最优化剪枝和可行性剪枝
搜索的技巧和优化(POJ3411,POJ1724)
记忆化搜索(POJ3373,POJ1691)
广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)
深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286)
5.8-5.15
动态规划:
1)背包问题. (poj1837,poj1276)
(2)型如下表的简单DP(可参考lrj的书 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)
(poj3176,poj1080,poj1159)
3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)
(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)
(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)
(poj2754,poj3378,poj3017)
5.15-5.22
kmp(POJ1961,POJ2406)
字典树 后缀树(POJ3415,POJ3294) 主席树 后缀数组 Trie树 AC自动机
红黑树 B树 B+树 R树 2-3-4树 K-d 树
5.22-5.29
堆 二项堆 斐波那契堆 Treap树堆
LCA和RMQ问题(LCA有离线算法(并查集+dfs)和在线算法(RMQ+dfs)POJ 1330)