![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
lbrony
这个作者很懒,什么都没留下…
展开
-
强连通分量——tarjan算法在有向图中的应用(1)
#include<cstdio>#include<algorithm>using namespace std;int n,m,head[10005],ecnt=1,x,y,cnt=1,ans;int dfn[10005],low[10005],v[10005];int s[10005],dfsc,h,c[10005],out[10005],size[10005];...原创 2019-10-16 16:57:06 · 130 阅读 · 0 评论 -
矩阵加速递推
设AAA为n∗sn*sn∗s的矩阵BBB为s∗ms*ms∗m的矩阵,则A∗BA*BA∗B的结果CCC为n∗mn*mn∗m的矩阵。给出矩阵乘法的公式: Cij=∑k=1sAikBkjC_{ij}=\sum_{k=1}^sA_{ik}B_{kj}Cij=∑k=1sAikBkj 其中iii表示行,jjj表示列。简单来说,CCC矩阵中的第iii行第jjj列由AAA矩阵的第iii行和BBB矩阵的...原创 2019-08-02 15:33:52 · 304 阅读 · 0 评论 -
Manacher
Manacher算法是一种用于在O(n)O(n)O(n)的复杂度下求出字符串最长子回文串的算法。例题(洛谷P3805)给出一个只由小写英文字母组成的,长度为n的字符串S,求S中最长回文串的长度(n<=11000000)由数据范围可知,只有O(n)O(n)O(n)及以下的算法才能通过这道题我们从暴力开始考虑整个问题的算法。首先,我们可以枚举所有的子串(O(n)O(n)O(n)),并一...原创 2019-08-03 18:52:48 · 71 阅读 · 0 评论 -
LCA
LCA作为树上的一种重要操作,在许多算法(如树链剖分)中作为不可或缺的基础操作,是必须掌握的内容之一。其思想是很简单的。若求LCA的两点在同一条链上,那么它们的LCA就是深度较浅的那个点;若两点分别在两棵子树上,我们就需要先保证两点深度相同,再同时向上溯源,当溯源路径相交时,它们的LCA就是路径的交点。为了加速这个“向上溯源”的过程,我们可以使用倍增算法进行加速。其代码实现主要分为两个部分:DF...原创 2019-08-06 10:39:09 · 184 阅读 · 0 评论 -
最短路 dijkstra
许多实际问题在解决时都可以抽象成一张图,以图的形式来对数据进行处理(如洛谷P1135),在图上有一类操作十分常见,即求从一点到另一点的最短路。解决这个问题通常有dijkstra和spfa两种算法,在这里我们使用dijkstra.dijkstra是基于贪心思想的最短路算法,每次都选择最短的路径对可达的点进行更新,因此可以保证每一个被到达的点都能得到最优解。dijkstra在建立路径时采取“松弛”...原创 2019-09-01 14:14:28 · 109 阅读 · 0 评论 -
P3195 玩具装箱TOY——斜率优化
#include<cstdio>#define ll long longusing namespace std;ll n,l,q[50005],tail=1,head=1,f[50005],s[50005];ll m(ll j) {return s[j]+j;}ll y(ll j) {return f[j]+m(j)*m(j);}ll k(ll i) {return 2*m...原创 2019-09-18 16:59:34 · 80 阅读 · 0 评论 -
割点——tarjan算法在无向图中的应用(1)
tarjin算法在各种各样的图论问题中有着广泛的应用。现在,我们讨论他如今算法在求无向图的割点时的应用。无向图的割点,指在一张连通的无向图中,若删去一个点及其所有连边,该无向图就不再联通,则这个点被称为这张无向图的割点。为了求割点,我们引入几个概念:(1)树边:指在dfs时被经过的边(2)回边:即非树边(3)dfs数组:即dfs序(4)low数组:每个点的子树内的点通过回边能到达的dfs...原创 2019-10-01 23:09:19 · 228 阅读 · 0 评论