一个串a在b中出现, 那么a是b的某些前缀的后缀, 所以搞出AC自动机, 按fail反向建树, 然后查询(x, y)就是y的子树中有多少是x的前缀. 离线, 对AC自动机DFS一遍, 用dfs序+树状数组维护, DFS到的查询点就回答询问.时间复杂度O(|ACAM|+QlogQ)----------...
分类:
编程语言 时间:
2016-01-06 21:33:29
阅读次数:
243
题目链接一个n个节点的树, 每一个节点有一个颜色, 1是根节点。 m个询问, 每个询问给出u, k。 输出u的子树中出现次数大于等于k的颜色的数量。启发式合并, 先将输入读进来, 然后dfs完一个节点就处理跟它有关的询问。感觉不是很难, 然而.....WA了n次最后还是看的别人的代码 1 #inc....
分类:
其他好文 时间:
2016-01-02 14:16:48
阅读次数:
351
把串倒过来插进trie上, 那么一个串的kpm串就是在以这个串最后一个为根的子树, 子树k大值的经典问题用dfs序+可持久化线段树就可以O(NlogN)解决------------------------------------------------------------------#inclu...
分类:
其他好文 时间:
2015-12-31 22:42:53
阅读次数:
272
分析:无论父节点增加了多少,子节点的增量总比父节点多1。这种差分的关系是保存不变的,我们可以一遍dfs根据结点深度得到在根结点的每个点的系数。估且把一开始的结点深度称做c0吧,对于子树的修改就只是结点的系数就只是c0+d,d是修正值。dfs得到树的dfs序列,子树的结点连续,就变成区间更新了。区间更...
分类:
其他好文 时间:
2015-12-14 01:22:07
阅读次数:
170
题意:询问树上结点x到结点y路上上的权值异或z的最大值。任意结点权值≤ 2^16,可以想到用字典树。但是因为是询问某条路径上的字典树,将字典树可持续化,字典树上的结点保存在这条路径上的二进制数。按照dfs序建树,结点u的字典树表示u到根结点路径上的字典树。如果两个结点u和v,在同一条通往根结点的路径...
分类:
其他好文 时间:
2015-12-13 11:06:42
阅读次数:
188
题意:
给出一棵n个结点的树,边上有权值;
对于每个点求离它第k小的距离;
n
题解:
正解似乎是树分治维护距离,然后二分答案啥的,时间复杂度O(nlog^3);
但是如果想不到树分治怎么办呢?那么就来写一个逗比做法吧!
考虑从一个点转移到另外一个点,这个转移过程对于一些点是增加这条边的权值,另一些是减少这条边的权值;
而投影到DFS序上,就是对于子树区间的加减修改;
从...
分类:
其他好文 时间:
2015-11-26 15:22:22
阅读次数:
428
按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码。不知道为什么,代码慢的要死,,#include #include #include #include #include #include #include #include using namespace std;template...
分类:
其他好文 时间:
2015-11-26 10:55:30
阅读次数:
141
High-level ancientsTime Limit: 20 SecMemory Limit: 256 MB题目连接http://acm.uestc.edu.cn/#/problem/show/574DescriptionLove8909 is keen on the history of K...
分类:
其他好文 时间:
2015-11-26 01:19:34
阅读次数:
218
0. 概要最近公共祖先,指的是在一颗有根树上,两个点的公共祖先中,深度最大的那个。最直接的应用是求无权树上两个点的最短距离:$distance(u, v) = depth(u) + depth(v) - 2depth(lca(u, v))$。再有其他的应用则以后再提。1 基于 dfs 序列上RMQ ...
分类:
其他好文 时间:
2015-11-24 22:54:47
阅读次数:
194