提纲

数据结构

基础

  1. 栈,队列,并查集,数组,链表, S T ST ST表,哈希表
  2. 分块:
  3. 莫队:
  4. 线段树:
  5. 权值线段树:
  6. 动态开点线段树:当初始序列为空或者答案的统计与初始序列无关时可使用动态开点,每一次修改最多加入logn个点,如此在数据范围较大时可实现 O ( k l o g n ) O(klogn) O(klogn)的复杂度
  7. 李超树:
  8. 线段树合并:
  9. 树状数组:
  10. 单调队列:
    * 队首是最优值,放入一个元素时将队尾比当前元素的元素出队
    * 先进失效,后进后失效(与队列性质有关 F I F O FIFO FIFO
    * 越劣的元素失效越快
  11. 单调栈:
    * 栈顶是最优值,放入一个元素时将栈顶比当前元素的元素出栈
    * 先进失效,后进先失效(与栈的性质有关 F I L O FILO FILO
    * 约优的元素失效越快
  12. S p l a y Splay Splay
  13. L C T LCT LCT
  14. 可并堆左偏树:
  15. 虚树:

嵌套

  1. 总述:外层数据结构的每个节点都用一个内层数据结构处理
  2. 线段树套线段树
  3. 线段树套平衡树
  4. 树状数组套主席树
  5. 替罪羊树套主席树

可持久化

  1. 主席树:
  2. 可持久化字典树:
  3. 可持久化平衡树:

动态规划

设计

  1. 设计状态:由少到多以能够描述问题,由多到少简化状态
  2. 设计转移:
  3. 类型
    * 线性 d p dp dp
    * 树形 d p dp dp
    * 数位 d p dp dp
    * 状压 d p dp dp
    * 背包
    * d p dp dp d p dp dp
    * 插头 d p dp dp
    * 计数类 d p ( 容 斥 d p ) dp(容斥dp) dp(dp):设计好状态,一般将状态设为不小于或不大于某个值 i i i的方案数更容易处理。转移时从上一层的 i 和 i − 1 ( 或 i + 1 ) i和i-1(或i+1) ii1(i+1)两个状态转移而来即可。对于恰好等于一类问题,按照以上方法设置状态后利用容斥原理更容易设计 d p dp dp

优化

  1. 数据结构:常常作为斜率优化,决策单调性等优化方法的辅助
  2. 斜率优化:可应用单调队列,线段树,平衡树等多种数据结构维护最优斜率
  3. 决策单调性:
    * 打表确定性质
    * 单调栈(单调队列)+二分维护决策空间
    * 比较简单的直接用单调队列即可维护
    * 更普适的做法是整体二分维护决策空间
  4. wqs二分:
  5. 单调队列使用要求:
    * 决策空间的上下界变化具有的单调性
    * v a l ( i , j ) val(i,j) val(i,j)中的每一项仅与 i i i j j j中的一个有关
    决策单调性使用要求:
    * 最优决策点具有单调性
    * v a l ( i , j ) val(i,j) val(i,j)中的每一项不需要仅与 i i i j j j中的一个有关

图论

基础

  1. 最短路
  2. D A G DAG DAG
  3. T a r j a n Tarjan Tarjan,点双,边双,强连通分量, e − D C C e-DCC eDCC v − D C C v-DCC vDCC
  4. 欧拉回路,哈密尔顿环
  5. 差分约束
  6. 2 − S A T 2-SAT 2SAT
  7. 各种生成树

网络流

算法

  1. D i n i c Dinic Dinic
  2. E K EK EK费用流

模型

  1. 最大权闭合图:按照最小割分集合模型设计理解
  2. 最小割可行边,必须边
  3. 最大密度子图
  4. 分数规划
  5. 二分图
    * 01染色法
    * 最小点覆盖
    * 最大独立集
    * 最小路径点覆盖
    * 可行边,必须边
  6. 上下界网络流
    * 无源汇上下界可行流
    * 有源汇上下界可行流
    * 有源汇上下界最大,最小流
    * 有源汇上下界最小费用可行流
  7. 性质
    * 最小点覆盖=最大独立集
    * 最大匹配=最大流=最小割
    * 二分图中最小点覆盖=最大匹配
    * 常用:二分图中 最大独立集=最小点覆盖=最大匹配=最大流=最小割
  8. 最小割分集合模型:将所有元素分为两集合并获得最大收益
    * 可将最大化收益转化为最小化代价:先将所有收益都选取,即每个元素向两个集合 ( S 和 T ) (S和T) (ST)都连边,求出最小割并去除这些收益,便可将所有元素划分到两个集合中,并且损失的代价是最小的。
  9. 小技巧:
    * 点边转化
    * 最小割模型中设置正无穷容量边防割断
  10. 切糕模型

数学

数论

  1. 欧拉定理,费马小定理,欧拉定理的推论
  2. g c d , e x g c d gcd,exgcd gcd,exgcd
  3. C R T , e x C R T CRT,exCRT CRT,exCRT
  4. B S G S , e x B S G S BSGS,exBSGS BSGS,exBSGS
  5. 逆元
  6. 原根(用于 N T T NTT NTT
  7. 反演

组合数学

  1. L u c a s , e x L u c a s Lucas,exLucas Lucas,exLucas
  2. 群论计数

线性代数

  1. 矩阵加速
  2. 高斯消元
  3. F F T , N T T FFT,NTT FFT,NTT

概率期望

  1. 期望的线性性
  2. 贝叶斯公式以及推论

计算几何

  1. 表示方法
  2. 凸包
  3. 半平面交
  4. 旋转卡壳

字符串

  1. S A SA SA
  2. K M P KMP KMP
  3. h a s h hash hash
  4. T i r e Tire Tire
  5. A C AC AC自动机
  6. 串的最小表示法
  7. M a n a c h e r Manacher Manacher
  8. 后缀自动机
  9. 回文自动机

搜索

  1. D F S DFS DFS
  2. B F S BFS BFS
  3. A ∗ A^* A
  4. I D A ∗ IDA^* IDA
  5. 折半搜索
  6. 启发式搜索

分治

  1. 整体二分
  2. C D Q CDQ CDQ分治
  3. 点分治
  4. 边分治
  5. 树链剖分(链分治)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值