OI知识汇总

以作者的水平为准


基础算法:枚举——>倍增

     差分(前缀和)——>二维

     贪心

     分治:归并排序(逆序对)

        二分答案

        二分查找

     快速排序——>离散化

     递归/递推


搜索:深搜(所有方案),宽搜(最优解)

   DFS优化:迭代

        最优性剪枝/可行性剪枝/搜索顺序

        记忆化搜索

        折半搜索

        A*/IDA*

   BFS优化:双向BFS

        判重(康托展开)

        优先队列搜索


DP:线性DP(LIS/LCS)  O(nlogn)算法

   区间DP

   树形DP

   背包类DP(01背包,完全背包,多重背包)

   数位DP

   DP优化:排除冗余状态

        状态压缩

        单调队列/数据结构

        决策单调性

        斜率优化


数据结构:队列/栈

     链表(hash表)

     ST表

     并查集

     二叉堆(可并堆)

     树状数组(求逆序对)

     线段树:动态开点

         线段树合并

         可持久化

     平衡树(区间操作):Splay

              fhq_treap

     LCT

     分块(莫队及其扩展)

     主席树(静态/动态)

     树套树(线段树+平衡树)


字符串算法:字符串hash

      KMP

      Trie——>可持久化/01 Trie

      AC自动机


数论:质数筛(欧氏筛/线性筛)

   分解质因数(唯一分解定理)

   欧拉函数(单个/线性筛)——>欧拉降幂

   Exgcd拓展欧几里得算法

   乘法逆元:拓欧

        费马小定理

        线性顺推逆元

        线性逆推阶乘逆元

   中国剩余定理CRT/ExCRT

   BSGS算法/ExBSGS算法

   组合计数(Lucas定理)

   矩阵快速幂(加速递推)

   高斯消元(高斯-约旦消元)

   线性基

   Miller_Rabbin

   FFT/NTT


树论:树的直径/重心(点分治)

    树链剖分

    LCA:树剖

       树上倍增

       欧拉环游序

    树上差分

    基环树


图论:拓扑排序 O(nlogn)

   最小生成树:Prim

         Kruskal(Kruskal重构树)

   最短路:Heap+dijkstra

       SPFA(SLF/LLL)——>判负环

       Floyd——>传递闭包

   图的连通性:Tarjan求强连通分量——>2-SAT

         割边/割点

         点双连通分量/边双连通分量

   二分图

   网络流


其他:结论题emm……

   尺取法

   悬线法

原文地址:https://www.cnblogs.com/soledadstar/p/11594926.html