提纲

数据结构

基础

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

嵌套

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

可持久化

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

动态规划

设计

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

优化

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

图论

基础

  1. 最短路
  2. DAGDAGDAG
  3. TarjanTarjanTarjan,点双,边双,强连通分量,e−DCCe-DCCeDCCv−DCCv-DCCvDCC
  4. 欧拉回路,哈密尔顿环
  5. 差分约束
  6. 2−SAT2-SAT2SAT
  7. 各种生成树

网络流

算法

  1. DinicDinicDinic
  2. EKEKEK费用流

模型

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

数学

数论

  1. 欧拉定理,费马小定理,欧拉定理的推论
  2. gcd,exgcdgcd,exgcdgcd,exgcd
  3. CRT,exCRTCRT,exCRTCRT,exCRT
  4. BSGS,exBSGSBSGS,exBSGSBSGS,exBSGS
  5. 逆元
  6. 原根(用于NTTNTTNTT
  7. 反演

组合数学

  1. Lucas,exLucasLucas,exLucasLucas,exLucas
  2. 群论计数

线性代数

  1. 矩阵加速
  2. 高斯消元
  3. FFT,NTTFFT,NTTFFT,NTT

概率期望

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

计算几何

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

字符串

  1. SASASA
  2. KMPKMPKMP
  3. hashhashhash
  4. TireTireTire
  5. ACACAC自动机
  6. 串的最小表示法
  7. ManacherManacherManacher
  8. 后缀自动机
  9. 回文自动机

搜索

  1. DFSDFSDFS
  2. BFSBFSBFS
  3. A∗A^*A
  4. IDA∗IDA^*IDA
  5. 折半搜索
  6. 启发式搜索

分治

  1. 整体二分
  2. CDQCDQCDQ分治
  3. 点分治
  4. 边分治
  5. 树链剖分(链分治)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值