建议大家学过AC自动机之后再来看这篇小结 fail树就是讲fail指针看做一条边连成的树形结构 fail指针在AC自动机中的含义是指以x为结尾的后缀在其他模式串中所能匹配的最长前缀的长度 所以在模式串中一定有sq[1~fa[x]]为sk[1~x]的子串 这个性质可以解决一些问题: 单词 显然,我们在 ...
分类:
其他好文 时间:
2018-10-19 14:23:47
阅读次数:
357
Description 众所周知,cqf童鞋对哲学有着深入的理解和认识,并常常将哲学思想应用在实际生活中,例如锻炼摔角技术或者研究化(fa)学。 由于cqf童鞋哲学造诣太过高深,以至于影响到了pty,他们常常给在一块VanUSee。Van的都是一些像“装备回收交易自由”、“开局一条鲲进化全靠吞”、“ ...
分类:
其他好文 时间:
2018-10-19 10:17:04
阅读次数:
170
两次dfs,第一次处理处fa[],depth[],size[],son[],第二次处理出top[],rank[],id[] 一条重链的编号是连续的,可以用数据结构维护,做事情的时候判断是否在同一条链上,不是就把最深的跳到链头的fa[],然后继续判断 luogu3384 【模板】树链剖分 区间加,求和 ...
分类:
其他好文 时间:
2018-10-18 10:48:45
阅读次数:
139
P1351 联合权值 想刷道水题还交了3次.....丢人 (1.没想到有两个点都是儿子的状况 2.到处乱%(大雾)) 先dfs一遍处理出父亲$fa[x]$ 蓝后再一遍dfs,搞搞就出来了。 ...
分类:
其他好文 时间:
2018-10-18 01:07:35
阅读次数:
148
题目大意:给你一棵$n$个点的带权树和正整数$K$,求每个点到其它所有点距离中第$K$大的数值。 其中,边权$≤10000$,$n≤50000$。 我们通过原树构建一棵点分治树,令$fa[u]$为$u$在点分树上的$father$。 对于每个点$u$,我们维护两个有序数组$f$和$g$。 其中$f[ ...
分类:
其他好文 时间:
2018-10-17 00:10:00
阅读次数:
147
看到$“L 的最小值”$,很容易想到二分答案,那么这道题的关键就是如何快速地检验 首先,如果已经规定了操作顺序,我们可以$O(n)$贪心求解 但是要枚举顺序的话复杂度是阶乘级别的,显然布星 于是考虑$DP$,我一开始的$DP$状态:$dp[i][j]$表示干掉前$i$个$fa$坛,用$j$次红光时的 ...
分类:
其他好文 时间:
2018-10-17 00:05:14
阅读次数:
168
Description Harry Potter 新学了一种魔法:可以让改变树上的果子个数。满心欢喜的他找到了一个巨大的果树,来试验他的新法术。 这棵果树共有N个节点,其中节点0是根节点,每个节点u的父亲记为fa[u],保证有fa[u] 不幸的是,Harry 的法术学得不到位,只能对树上一段路径的节 ...
分类:
其他好文 时间:
2018-10-15 20:23:12
阅读次数:
123
线段树: 并查集: cpp include include define X 10000+10 using namespace std; int fa[X]; int find(int x) { if(fa[x]!=x) return fa[x]=find(fa[x]); return x; } v ...
分类:
其他好文 时间:
2018-10-15 14:41:05
阅读次数:
198
1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=1007; 7 const int INF=0x7f7f7f7f; 8 int n,ans; 9 int fa[maxn],a[ma... ...
分类:
其他好文 时间:
2018-10-12 23:56:53
阅读次数:
212
最近公共祖先, 树上倍增,LCA, fa [ i ] [ j ] 表示 i 节点向上 2j 的祖先 很像dp, k 属于 [ 1 , log ( n ) ] ,f [ x ][ k ] = f [ f [ x ] [ k-1 ]] [k-1] 算lca时, 先不妨设 d [ x ] >= d [ y ...
分类:
其他好文 时间:
2018-10-12 23:37:31
阅读次数:
194