之前学了不少的东西,我不能说是学会了,只能说是,见过了不少的东西,但是真正学精学会的,可能没有几个
对思维的培养真的是太差了,做题少的弊端暴露地体无完肤
在这里我总结一下以前看过的还有学过的所有的东西,梳理一下自己的知识脉络,对于不熟悉的东西还需要去看博客来加强理解(同时也要看如何实现这些东西)
数据结构:
线性表之数组和链表就不用提了,栈和队列,单调栈与单调队列,并查集之带权并查集与并查集拆点,二叉堆、可并堆与优先队列,映射、集合与哈希表(二维),树的遍历问题(序遍历及其相互的转化与计数)
解决RMQ问题的ST算法(二维),树状数组(差分、二维、解决线段树问题),线段树(主席树,动态开点,合并,维护复杂信息,二维),对于动态序列的维护有Treap和Splay
复杂的序列维护问题之树套树有替罪羊树套权值线段树、线段树套权值线段树、树状数组套主席树以及线段树套Treap
使用分块暴力维护序列(数列分块与树的分块),离线维护序列的莫队算法
对于可持久化来说有无旋Treap实现可持久化平衡树、按秩合并与可持久化线段树实现可持久化并查集、可持久化字典树解决异或问题、主席树与可持久化线段树
多维的BST之K-D树,启发式合并的思想,四分树与八分树的思想,Bitset数据结构的运用
与字符串问题的结合:字典树(异或问题)
图论的树专题与数据结构:
树链剖分与线段树,LCT与Splay,欧拉游览树与Splay,树的DFS序与欧拉序,LCA与RMQ问题
图论:
图的存储遍历不提了
最小生成树之Prim、次小生成树、最小瓶颈路、曼哈顿距离最小生成树、矩阵树定理、有向图之最小树形图
最短路之Dijkstra、Bellman-Ford与SPFA(负环)、Floyd(最小环)、差分约束、分层建图、建反图、次短路、K短路
树的一系列算法,点分治,链分治,动态点分治,树的直径
网络流问题,最小割,最大流,费用流(ZKW),线性规划,上下界网络流,平面图对偶图转最短路
连通分量相关的有求无向图割点和割边,求无向图的点双连通分支,边双连通分支,有向图的强连通分量,缩点重构图,2-SAT问题
二分图相关有判定、匈牙利算法、KM算法、带花树算法(最大匹配,最大权匹配)、多重匹配(转网络流)、稳定婚姻问题
与01分数规划的结合之最小平均值环,最优比率生成树
其他图论问题之prufer编码解决树的形态统计(Cayley定理),拓扑排序与欧拉图,仙人掌图,弦图与区间图
与动态规划的结合:树形动态规划(虚树、基环树),状态压缩dp(斯坦纳树)
动态规划:
背包九讲:背包计数,01背包,完全背包,多重背包(二进制优化),分组背包,二维背包,混合背包问题,有依赖的背包,树形背包(树规)
DAG上最长路,区间与环形dp,棋盘dp,划分dp,数位统计dp,期望dp,状态压缩dp(插头dp),多维dp压状态或压阶段
序列型DP:LIS,LCS,LCIS,最长公共子串(后缀自动机裸题)
记忆化搜索,双重dp,动态规划的优化
字符串:
KMP,拓展KMP,字符串哈希,后缀数组,后缀自动机,回文树,AC自动机,马拉车
与动态规划的结合:子序列与子串问题,AC自动机上dp
数学:
GCD、线性筛、分解质因数、扩展GCD、模线性方程(同余方程、乘法逆元)、中国剩余定理与拓展、费马小定理、欧拉定理与拓展、BSGS与拓展
裴蜀定理、卢卡斯定理、矩阵乘法与矩阵快速幂、广义斐波那契循环节、线性递推优化、整数拆分、母函数、二分法、三分法、快速幂、更相减损术、欧拉函数、卡特兰数
调和级数、容斥原理(补集转化)、置换群(循环节)、Burnside引理(Polya定理)、01分数规划、排列组合与二项式定理、NIM游戏(SG函数)、FFT、NTT、高斯消元、莫比乌斯反演、杜教筛
高斯消元、大数判素与求大数素因子、唯一分解定理(A^B的所有因子之和取模)、阶和原根、拉姆齐定理
暴力与搜索:
枚举非空真子集、枚举多重集排列组合、双向BFS、迭代加深搜索、启发式搜索、状态空间搜索、极大极小搜索、DLX精准覆盖
模拟:
高精度、表达式求值、随机化、模拟退火、桶排序、随机增量法(最小圆覆盖)
贪心分治:
区间覆盖、选择不相交区间(区间选点)、哈夫曼树、乘船问题、汽车加油问题、拟阵上的最大独立集、归并排序求逆序对、棋盘覆盖问题、nth_element、巨人与鬼问题、整体二分与CDQ分治
计算几何:
点、直线、线段、多边形、圆、矩形的基本运算,凸包,半平面交,旋转卡壳,平面最近点对,三点求圆心坐标,求两圆相交面积,pick公式,扫描线,三维计算几何,仿射变换与矩阵,辛普森积分