OI知识大列表(持续更新中)

呕心沥血之作啊...
注:仅供C++选手参考,且仅是OIer的知识点,不保证是ACMer的知识点.
剩余:线性规划、基础数论、多项式相关、计算几何、组合计数...
若有补充,欢迎在评论区补充+喷.


语言基础:


  1.头文件
    万能头文件#include<bits/stdc++.h>
    其它头文件


  2.数据类型
    整形int,long long
    浮点型float,double与long double
    字符型char
    布尔型bool


  3.输入输出
    cin与cout
    scanf与printf
    快读与快输
    玄学fread与fwrite


  4.顺序结构


  5.分支选择结构
    if语句
    switch语句


  6.循环结构
    for循环
    while循环与do-while循环
    循环嵌套
    continue和break


  7.数组
    数组的基本概念
    字符数组及一些操作
    多维数组


  8.函数
    模块化函数
    函数的嵌套
    函数的递归
    return和exit


  9.结构体struct
    结构体的定义
    结构体重载
    内部成员函数


  10.文件操作
    freopen重定向
    fopen


  11.指针
    指针的定义
    动态分配内存
    数组模拟指针
    数组的指针
    函数的指针


  12.模拟


  13.其它语法
    #define宏定义
    inline内联
    typedef自定义类型
    namespace命名空间
    二进制位运算
    共用体union
    不定参数template<typedef T>
    满足一定条件才运行的#ifdef和#endif




基础算法:


  1.高精度
    加法高精度
    减法高精度
    乘法高精度
    FFT优化大数乘法
    除法高精度


  2.排序
    选择排序
    冒泡排序
    插入排序
    快速排序
    线性查找算法BFPRT
    归并排序
    堆排序
    二叉查找树排序
    桶排序
    计数排序
    基数排序
    希尔排序
    外部排序
    多线程睡眠排序
    猴子排序


  5.暴力枚举
    穷举法
    枚举优化


  4.递推
    基础递推
    递归的记忆化
    一些常用的递推式
    矩阵乘法快速幂加速递推


  5.深度优先搜索dfs
    递归
    回溯
    可行性剪枝与最优性剪枝
    记忆化dfs
    非递归的dfs


  6.广度优先搜索bfs
    基础bfs
    bfs判重


  7.贪心
    贪心策略
    贪心的证明
    贪心优化
    与递推结合的贪心


  8.分治
    子问题划分
    二分查找
    二分答案
    三分极值
    快速幂
    二分套二分




动态规划DP:


  1.线性DP
    DP的最优子结构和无后效性
    单进程DP
    双进程DP
    资源分配类DP
    最长递增子序列lis
    最长公共子序列lcs


  2.背包DP
    0-1背包
    完全背包
    多重背包的二进制拆分优化
    二维费用背包
    分组背包
    有依赖的背包
    泛化物品的背包
    背包k优解
    树上背包


  3.区间DP
    区间为状态的DP
    环状区间DP


  4.树形DP
    二叉树DP
    多叉树DP
    基环树DP


  5.DAG有向无环图上的DP
    拓扑序确定顺序
    DAG DP


  6.多维DP
    从线性到多维的拓展
    轮廓线DP
    轮廓线状压DP(插头DP)


  7.状压DP
    二进制压缩状态
    n进制压缩状态
    枚举子集DP
    斯坦纳树
    记忆化搜索实现的状压DP
    轮廓线状压DP(插头DP)
    bitset压缩状态


  8.概率DP
    与期望结合的概率DP
    与组合数学结合的概率DP
  
  9.字符串DP
    KMP套DP
    trie树上的DP
    有限状态自动机上的DP


  10.有后效性的处理
    高斯消元
    最短路
    记忆化搜索


  11.计数DP


  12.数位DP
    二进制数位DP
    十进制数位DP
    N进制数位DP


  13.滚动数组优化DP
    一维滚动数组优化DP
    多维滚动数组优化DP


  14.单调性DP
    二分优化DP
    单调队列优化DP
    决策单调栈优化DP
    斜率优化DP
    旋转卡壳优化DP


  15.单峰极值DP
    三分优化DP


  16.四边形不等式优化DP
    四边形不等式优化线性DP
    四边形不等式优化区间DP


  17.数据结构优化DP
    前缀和优化DP
    并查集优化DP
    堆优化DP
    树状数组优化DP
    线段树优化DP
    单调队列单调栈优化DP
    平衡树优化DP
    树套树优化DP
    cdq分治优化DP


  18.斜率DP
    斜率优化DP
    动态凸包优化DP


  19.矩阵乘法快速幂优化DP


  20.倍增优化DP
    ST表


  21.DP套DP
    用DP来转移


  22.其它DP优化
    与贪心结合的DP
    离散化优化DP
    离线处理DP
    寻址优化DP
    改变状态优化DP




搜索:


  1.深度优先搜索dfs
    递归求解
    回溯
    最优性剪枝
    可行性剪枝
    其它剪枝
    深搜记忆化
    非递归人工栈dfs


  2.广度优先搜索bfs
    bfs判重
    双向bfs
    优先队列bfs
    启发式bfs


  3.迭代加深搜索
    限制层数的dfs
    启发式迭代加深IDA*


  4.启发式搜索A*
    基于bfs的A*
    基于迭代加深的IDA*


  5.对抗搜索
    minimax极大极小搜索
    alpha-beta优化


  6.舞蹈链DLX算法




线性数据结构:


  1.数组
    一维数组
    多维数组
    可持久化数组


  2.栈
    普通栈
    单调栈
    可持久化栈


  3.队列
    普通队列
    双端队列
    单调队列
    优先队列
    循环队列
    可持久化队列


  4.链表
    普通链表
    块状链表
    跳表
    可持久化链表


  5.hash哈希表
    hash思想
    除法散列
    乘法散列
    平方散列
    拉链法处理冲突
    线性探测法处理冲突
    再次散列法处理冲突
    字符串hash




基础图论:


  1.图的概念
    点和边
    点权和边权
    有向图和无向图


  2.图的存储
    邻接矩阵
    邻接表
    边表
    链式前向星


  3.图的遍历
    图的深度优先遍历dfs
    图的广度优先遍历bfs


  4.欧拉路
    一笔画问题
    无向图的欧拉路
    有向图的欧拉路
    欧拉图


  5.哈密顿路
    哈密顿路
    哈密顿回路


  6.有向图的连通性
    强连通分量
    有向图的必经点和必经边
    2-SAT问题


  7.无向图连通性
    割点割边
    点双连通分量和边双连通分量


  8.最短路
    floyd算法
    dijkstra算法及其堆优化和线段树优化
    Johnson算法
    Bellman-Ford算法
    SPFA算法以及各种优化
    A*求最短路
    k短路
    差分约束


  9.生成树
    prim算法及其堆优化
    kruskal算法
    次小生成树
    k小生成树
    生成树计数(Matrix-tree定理)
    最优比例生成树
    最小瓶颈生成树
    特殊生成树


  10.特殊图
    菊花图
    网格图
    平面图与对偶图


  11.拓扑排序
    普通拓扑排序
    字典序最小的拓扑排序


  12.最小平均值环


  13.弦图
    弦图
    完美消除序列
    lexBFS算法
    MCS最大势算法
    团与极大团
    弦图的最大独立集和最小团覆盖
    完美图和伴完美图
    区间图


  14.仙人掌
    普通仙人掌
    动态仙人掌


  15.一般图匹配
    带花树算法
    随机匹配
    基于线性代数的一般图匹配




堆:


  1.二叉堆
    普通二叉堆
    优先队列
    哈夫曼树
    哈夫曼森林
    可持久化二叉堆


  2.可并堆
    左偏树
    斜堆
    二项堆
    配对堆
    斐波那契堆
    可持久化可并堆
    随机堆




线段树树状数组:


  1.树状数组
    树状数组支持单点修改区间查询
    树状数组支持区间修改单点查询
    树状数组支持区间修改区间查询
    树状数组查询极值
    可持久化树状数组


  2.普通线段树
    线段树基础
    lazy-tag懒标记
    多个tag时的处理
    权值线段树
    时间线段树
    二维线段树
    矩阵树


  3.黑科技线段树:
    zkw线段树
    李超线段树
    吉司机线段树
    32叉线段树


  4.线段树技巧
    线段树分裂与合并
    线段树动态开点
    离散化


  5.可持久化线段树
    静态主席树
    动态主席树


  6.划分树与归并树
    划分树
    归并树




树上操作:


  1.树的最近公共祖先lca
    倍增lca
    tarjan求lca
    RMQ与lca之间的转化
    加减1RMQ
    树剖求lca
    树上差分
    虚树


  2.将树上问题转化为序列问题
    树的dfs序
    树链剖分(重链剖分与长链剖分)


  3.树的重心和直径
    树的重心
    树形DP求树的直径
    两遍bfs求树的直径


  4.树分治
    点分治
    边分治
    链分治
    动态树分治


  5.多叉树转二叉树


  6.prufer序列


  7.基环树
    基环树的概念
    外向基环树
    基环树的重心及直径


  9.最小树形图(朱刘算法)




网络流与二分图:


  1.最大流
    最大流的概念
    Ford-Fulkerson算法
    Edmonds-Karp算法
    dinic算法及其当前弧优化
    ISAP算法及其断层优化
    LPP预留推进算法
    HLPP最高标号预流推进算法
    Push-relabel algorithm with FIFO vertex selection rule前置标号预流推进算法
    Push-relabel algorithm with dynamic trees动态树优化预流推进算法
    KRT算法
    有上下界的最大流


  2.费用流
    1.费用流的概念
    2.费用流的Edmonds-Karp算法
    3.zkw费用流算法
    4.最小费用可行流
    5.线性规划转费用流


  3.最小割
    最小割的概念
    最大流最小割定理
    最小割树


  4.二分图
    二分图的概念
    二分图的判定
    稳定婚姻问题


  5.二分图最大匹配
    KM算法(匈牙利算法)
    与最大流之间的转化


  6.二分图的模型
    二分图最小顶点覆盖
    二分图最大独立集
    二分图点权最大独立集


  7.其它网络流模型
    最小路径覆盖
    最大权闭合子图
    最小路径边覆盖


  8.建图的优化
    RMQ优化建图
    线段树优化建图
    树剖优化建图


  9.方案唯一性




平衡树:


  1.二叉搜索树


  2.treap树堆
    旋转
    代替rand()
    普通treap
    非旋treap(fhq)
    可持久化treap
    treap分裂与合并
    线性构造


  3.splay伸展树
    单旋splay
    双旋splay
    splay支持lazy-tag
    splay的合并与分裂
    splay的启发式合并
    Link-Cut Tree动态树
    可持久化LCT
    由上至下旋转的splay
    玄学splay
    top tree


  4.Size Banlanced Tree节点大小平衡树
    标准SBT
    退化SBT


  5.红黑树
    普通红黑树
    红黑树的分裂与合并
    简化红黑树(AA树)
    简化红黑树(LLRB)
    基于重构的可持久化红黑树
    双红修正
    双黑修正


  6.AVL树
    普通AVL树
    AVL树支持分裂合并
    可持久化AVL


  7.替罪羊树
    重构
    基于重构的平衡树
    替罪羊树支持部分可持久化
    简化替罪羊朝鲜树


  8.leafy tree
    普通leafy tree
    基于旋转的leafy tree
    基于重构的leafy tree
    leafy tree支持合并与分裂
    可持久化leafy tree


  9.用权值线段树代替的平衡树
    普通权值线段树
    离散化
    强制在线处理




字符串:


  1.字符串匹配算法KMP
    普通KMP算法
    扩展KMP算法


  2.字典树Trie
    Trie树
    xor异或值Trie树
    可持久化Trie树
    Trie图(AC自动机)
    Fail树


  4.后缀相关
    后缀数组SA(倍增算法和DC3算法)
    后缀树
    后缀自动机SAM
    后缀平衡树
    后缀仙人掌


  5.有限状态自动机


  6.简单密码学


  7.回文串
    manacher算法
    回文自动机


  8.最长公共前缀LCP


  9.字符串hash


  10.最小表示法




随机数:


  1.随机算法


  2.模拟退火算法
    物理退火过程
    模拟退火算法


  3.爬山算法


  4.遗传算法
    生物进化论
    模拟进化


  5.粒子群算法




技巧与思想:


  1.莫队
    普通莫队
    树上莫队
    带修莫队
    回滚莫队


  2.cdq分治与整体二分
    按照时间划分的分治
    按照操作划分的分治
    cdq分治套数据结构
    cdq分治套cdq分治


  3.倍增
    LCA问题的倍增算法
    RMQ问题的ST算法


  4.二分
    普通二分
    二分的嵌套


  5.三分
    普通三分
    三分的嵌套


  6.位运算


  7.离散化
    无重复元素的离散化
    有重复元素的离散化


  8.分块
    序列分块
    树上分块
    块状链表
    可持久化块状链表


  9.图的拆点拆边
    拆点
    拆边


  10.数列前缀和与差分
    前缀和
    多维前缀和
    差分
    树上差分


  11.启发式合并


  12.哈夫曼编码


  13.打表
    普通打表
    分段打表
    打表找规律


  14.卡常数
    位运算加速
    continue加速
    时钟周期的知识
    嵌入汇编语言
    结构联合(使用结构体struct和联合体union)
    指针和动态分配内存的取舍
    分支预测
    高维数组的使用


  15.lzn树
    


其它算法与数据结构:


  1.k-d tree空间划分树


  2.分数规划
    0-1分数规划
    一般分数规划


  3.并查集
    普通并查集
    路径压缩
    带权并查集
    支持删除的并查集
    可持久化并查集


  4.博弈论
    Nim游戏
    博弈转化为图论
    SG函数
    博弈树及alpha-beta优化
    树形图博弈


  5.概率期望
    概率
    期望
    概率DP
    高斯消元辅助


  6.笛卡尔树
    与treap相似
    线性构造




STL标准算法库:


  1.迭代器iterator
    STL使用的迭代器
    定义一个迭代器iterator


  2.线性数据结构系列
    动态数组vector
    链表list
    单向链表forward_list
    队列queue
    双端队列deque
    栈stack
    自带1/32常数的bitset
    拥有两个元素的结构体pair


  3.优先队列priority_queue
    优先队列的使用
    自定义优先级
    懒惰删除法


  4.二分函数
    lower_bound
    upper_bound


  5.排序sort
    从小到大的sort
    自定义优先级


  6.字符串
    string的使用
    rope(加强版string)


  7.集合
    有序集合set
    有序可重集合multiset
    无序集合unordered_set
    无序可重集合unordered_multiset
    自定义优先级


  8.关联数组(映射)
    有序映射map
    有序多重映射multimap
    无序映射unordered_map
    无序多重映射unordered_multimap


  9.数组上的操作
    数组转置reverse
    全排列函数next_permutation

猜你喜欢

转载自blog.csdn.net/hzk_cpp/article/details/80977208