20190729

分治
普通分治:通过将区间分成两个区间,来将问题分成两个⼦问题
二分:对答案分治
整体二分&CDQ分治:离线分治算法
点分治:找重心分治
图论
Dijkstra:找最小的dis[x],x一定确定了最短路,只可解决正权(可用堆优化)
Bellman-Ford:枚举并不断进行松弛
SPFA已死 :队列优化的Bellman_Ford,可用于判负环
Floyd:
设F(K,X,Y) 表示X 到Y 的路径中,满⾜路径上的点的标号都不超过K 的最短路径
F ( K , X , Y ) = M i n ( F ( K − 1 , X , Y ) , F ( K − 1 , X , K ) + F ( K − 1 , K , Y ) ) F(K,X,Y)=Min( F(K-1,X,Y) , F(K-1,X,K)+F(K-1,K,Y) ) F(K,X,Y)=Min(F(K1,X,Y),F(K1,X,K)+F(K1,K,Y))
用于求多源最短路

差分约束:给出d[y]<=d[x]+w一类不等式的最优解,可使用最短/长路求解
Tarjan:求强连通分量,可求割点、割边
Kruskal:贪心,求最小生成树

二分图:
判奇环(二分图):染色法
匈牙利算法:二分图最大匹配

最⼩顶点覆盖:选最少的点覆盖所有边
|⼆分图最⼩顶点覆盖|=|⼆分图最⼤匹配|
最⼤独⽴集:选最多的点使得它们两两没边相连
|⼆分图最⼤独⽴集|=总点数-|⼆分图最⼩顶点覆盖|

Hall 引理:
设S 是左边点的⼀个⼦集,设N(S) 为S 所有点邻居的并
集,则⼀个⼆分图存在完美匹配的充要条件是:
对于所有S, ∣ S ∣ &lt; = ∣ N ( S ) ∣ |S|&lt;=|N(S)| S<=N(S)

字符串
KMP:用next数组实现快速字符串匹配
AC自动机:在Trie树上跑KMP以实现多模式串匹配
后缀数组SA:
给定⼀个串s[1…n],将所有后缀排序
rk[i]:s[i…n] 的排名
sa[i]: rk 为i 的后缀是哪个

分治还是比较友善的,图论比较基础,字符串讲的实在有点快

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值