摘要:
线段树 模板题:线段树1-洛谷(代码) 线段树是一种平衡二叉树,其核心思想为二分+分治+懒标记,可在 O ( log 2 n ) O(\log_2n) O(log2n)的复杂度内完成单点修改、区间修改、区间查询等操作。 设原序列长度为 n n n,则每个节点 i d ( 1 ≤ i d ≤ 4 阅读全文
摘要:
字符串基础概念 字符串:简称串,是由字符组成的有限序列。串中所包含的字符个数为串长,串长为0的串为空串。串长与所有对应位置字符都相同的串为相等串,空串一定为相等串。子串、子序列:设从原串 S S S某一位置开始,若以连续顺序取 S S S中若干长度的字符,所组成的新串 S ′ S' S′即为 S S 阅读全文
摘要:
Johnson 本质:SPFA+Dijkstra特点:多源最短路适用对象:允许负权图,不允许负环图(负环:图上边权之和为负的环,负环图无法求解最短路)存储结构:链式前向星核心思想:先使用SPFA/Bellman-Ford计算潜在值,将所有边的权值调整为非负,再对每个顶点使用Dijkstra算法流程: 阅读全文
摘要:
最短路计数 算法流程:在最短路算法中另设置一个 d p dp dp数组用于计数最短路,并将源点的 d p [ S ] = 1 dp[S]=1 dp[S]=1。在松弛操作时: if(dis[V]==dis[U]+W) dp[V]+=dp[U]; if(dis[V]>dis[U]+W){ dis[V]= 阅读全文
摘要:
倍增 倍增是与二分相反的算法,其核心思想是每次扩大一倍,以 2 n 2^n 2n的速度极大扩展空间 原理:任意整数均可被分解为若干个以2为底的幂项和。最经典的倍增是 2 i 2^i 2i(实际应为 e i e^i ei) 流程:定义倍增表 g [ i ] [ j ] g[i][j] g[i][j], 阅读全文