
模板
杏花疏影里_吹笛到天明
自能窥宋玉,何必恨王昌。
展开
-
AC自动机原理【学习笔记】
概述ACACAC自动机是以TrieTrieTrie为结构基础,kmpkmpkmp为思想基础建立的,主要用于多模式串匹配。在ACACAC自动机上,所有的模式串构成一棵TrieTrieTrie树,而且利用kmpkmpkmp的思想,在TrieTrieTrie上构造失配指针。TrieTrieTrie上的结点表示的是某个模式串的前缀,相当于一种状态,而TrieTrieTrie上的边就相当于是状态的转移。failfailfail指针先把所有的模式串放到TrieTrieTrie,举例如下:假如说现在要匹配的原创 2020-05-16 15:34:19 · 516 阅读 · 0 评论 -
【模板】拓扑排序
之前写题要用板子的时候去挖坟【图论】拓扑排序&判环发现我居然没有存板子就完善一下吧 把代码搞出来 顺便复习一下void tp(){ for(int i=1;i<=n;i++) if(ind[i]==0) Q.push(i); while(!Q.empty()) { int u=Q.front(); Q.pop(); ans[++cnt]=u; ...原创 2019-06-23 21:37:51 · 157 阅读 · 0 评论 -
【图论】拓扑排序&判环
定义对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。 实现步骤在有向图中选一个没有前驱的顶点并且输出删除所有和它有关的边重复上述两步,直至所有顶点输出,或者当前图中不存在无前驱的顶点。后者代表我们的有向图是有环的,...原创 2018-07-16 21:52:33 · 1315 阅读 · 0 评论 -
BSGS 大步小步算法 求解高次同余方程【模板】
BabyStepGiantStepBabyStepGiantStepBabyStepGiantStep 算法,缩写为BSGSBSGSBSGS,即大步小步算法,,拔山盖世算法用于求解同余方程 ax≡b(modp)a^x≡b(mod p)ax≡b(modp) ,其中(a,p)=1(a,p)=1(a,p)=1首先,我们可以先分析一下xxx的范围(这个地方我觉得网上很多题解都没有讲到,只是列出了范围而...原创 2019-03-26 13:56:42 · 317 阅读 · 0 评论 -
【模板】快速幂
快速幂的思想比较简单 利用了二进制来进行优化比如我们要求2^13朴素的算法就是将2连乘13次而快速幂是这么做的:13的二进制是1101 那么 213=21 * 2^4 * 2^8 就只需要计算这些值就可以了 实现时用了一个累乘器,每次判断如果这个数的最右是1的话就让ans乘一下累成器快速幂可以降到log的级别LL Pow(LL a,int b) { LL ans=1; ...原创 2019-03-22 13:53:15 · 178 阅读 · 0 评论 -
【模板】LCA的倍增算法
在线算法和st表求区间最值类似暴力求区间最值需要一个一个比较暴力求lca需要一步一步爬树st表用倍增比较一段和一段间的最值启发我们求lca也用倍增,一次向上爬2i2^i2i个点设f(i,j)f(i,j)f(i,j)表示点i向上跳2j2^j2j步之后的点边界:f(i,0)=fa[i]f(i,0)=fa[i]f(i,0)=fa[i] (表示向上跳一步的点)转移:跳2j2^j2j步,先跳...原创 2019-03-22 13:26:36 · 513 阅读 · 0 评论 -
【模板】LCA
文章目录LCA算法暴力dfs序+rmqLCA简单说一下,LCA(Least Common Ancestors),最近公共祖先,字面上的意思,就是两个节点的公共祖先中,最近的那一个算法暴力在线算法首先dfs预处理出每个点的深度,然后再将u,v中比较深的那个点往上爬,将他们调整到同一深度然后再一起一步一步地爬树,爬到同一深度暴力算法的复杂度较高,但由于它非常的简单清晰,所以在时间不够的...原创 2019-03-22 13:24:38 · 419 阅读 · 0 评论 -
【模板】Tarjan求LCA--离线算法
离线算法先记录所有询问,然后对树做一次dfs求出所有点对的lca在进入u这个点的时候,把边(u,fa(u))删除,此时就形成以u为根的一棵子树,并且记录u已被访问过,然后依次遍历u的所有子节点在遍历结束后,查找所有跟u有关的查询(u,vi),若vi已被访问过,则lca(u,vi)是vi所在子树的根最后在退出u的时候把边(u,fa(u))重新加上下面的例子偷了一下学长的ppt现在先d...原创 2019-03-20 13:50:40 · 273 阅读 · 0 评论 -
【模板】LCA的RMQ做法(详)
目录时间戳和欧拉序rmqst表在线算法时间戳和欧拉序时间戳(st[i]):第i个节点第一次被访问到的时间,即:若访问一个节点需要花费一个单位时间,第一次访问到当前节点是在第几个单位时间被访问到欧拉序是一棵树按照dfs的顺序产生的序列,相当于模拟dfs的过程For instance:比如说,上面的例子的欧拉序就是:111 222 444 222 555 888 555 ...原创 2019-03-19 13:18:48 · 370 阅读 · 0 评论 -
【模板】RMQ--浅谈st表
每次说浅谈其实都短不了还是争取写短一点复杂度O(n+nlogn)O(n+nlogn)O(n+nlogn),询问O(1)O(1)O(1)st表的思想其实也就是dp和倍增但是st表的应用好像不怎么广泛 除了单纯的RMQ和LCA会用到之外好像没啥用处 而且不支持修改没有线段树强(小声bb)但是它比线段树短多了设f(i,j)f(i,j)f(i,j)表示[i,i+2j−1][i,i+2^j-1]...原创 2019-03-14 14:06:11 · 298 阅读 · 0 评论