题目描述 题解: 对于所有n串建广义后缀自动机。 (广义后缀自动机唯一区别就是每次将las附成1,并不需要在插入时特判) 建完后再建出parent树,然后用dfs序+树状数组搞区间不同种类。 其实就是HH的项链+广义后缀自动机。很水的。(虽然我调了半个晚上) 代码: ...
分类:
其他好文 时间:
2018-12-10 21:55:47
阅读次数:
246
P3899 [湖南集训]谈笑风生 题目大意 n个节点的树,q次查询,每次查询给出a,k求三元组的数量(a,b,c),(a,b,c)的定义为:a、b均为c的祖先且距离<=k 离线,启发式合并线段树,长链剖分当然都能过这题 这里讲讲主席树的做法 dfs序建树 a为b的祖先时 查询a子树内深度<=dep[ ...
分类:
其他好文 时间:
2018-12-09 14:01:19
阅读次数:
178
传送门在这里。 大意: 给一堆字符串,询问每个字符串有多少子串在所有字符串中出现K次以上。 解题思路: 这种子串问题一定要见后缀自动机Parent树Dfs序统计出现次数都是套路了吧。 这道题统计子串个数,那么可以发现,若一个节点所对应的子串出现了K次,那么其贡献就是len,不需要考虑重复。 因为即使 ...
分类:
其他好文 时间:
2018-12-07 17:17:27
阅读次数:
221
$\color{ 0066ff}{题目描述}$ 有一棵 n 个点的树,根结点为 1 号点,每个点的权值都是 1 或 0 共有 m 次操作,操作分为两种 get 询问一个点 x 的子树里有多少个 1 pow 将一个点 x 的子树中所有节点取反 对于每个 get 给出答案 $\color{ 0066ff ...
分类:
其他好文 时间:
2018-12-07 11:48:16
阅读次数:
221
树链剖分 write by:BigYellowDog、lsy263 预备知识 预备知识:DFS序、LCA原理、线段树 线段树的作用是为了维护区间,所以这里不一定是线段树,还可以是其它维护区间的数据结构 PS:如果你大致掌握了上述知识,树剖10分钟就可以理解。当然,如果没掌握,树剖还是有点难理解的。所 ...
分类:
其他好文 时间:
2018-12-01 15:25:36
阅读次数:
140
这道题利用了fail树的神奇性质————父节点为其子节点的前缀 先对Alice的集合建一个fail树, Bob每插入一个串,都将串在自动机上经过的点在树上打上标记(+1) 每次查询的答案就是询问串的结束节点的子树的贡献 所以还需要用到树状数组来维护dfs序 因为Bob的一个串至多只能对Alice的某 ...
分类:
编程语言 时间:
2018-11-26 17:31:47
阅读次数:
250
http://uoj.ac/problem/407 分析: 分别建立最小/最大kruskal重构树。 每次询问给出的两个点能走到的部分分别对应两棵树$dfs$序的一段区间。 转化成判断矩形中是否有点。 代码: ...
分类:
其他好文 时间:
2018-11-25 16:09:19
阅读次数:
256
记录dfs序列,dfn[tot] 记录第tot次访问的节点 然后查两点在dfs序中出现的第一次 id[u] id[v] 然后 找 dep[k] = min( dep[i] ) {i 属于 [id[u], id[v]]} 最后dfn[k] 就是所求.. 感觉弄来弄去 就是 在映射... 无非就是 求一 ...
分类:
其他好文 时间:
2018-11-23 23:54:20
阅读次数:
291
首先,在学树链剖分之前最好先把 LCA、树形DP、DFS序 这三个知识点学了还有必备的 链式前向星、线段树 也要先学了。如果这些个知识点没掌握好的话,树链剖分难以理解也是当然的 树链剖分 就是对一棵树分成几条链,把树形变为线性,减少处理难度需要处理的问题: 将树从x到y结点最短路径上所有节点的值都加 ...
分类:
其他好文 时间:
2018-11-20 23:01:23
阅读次数:
146
又到了快乐的板子题时间了!!!QwQ 显然这道题用线段树是可以做的 , 但是蒟蒻的我还是想用树状数组写(好吧还是因为太懒了) 所以就变成了一个树状数组的单点修改+区间查询+跑一个DFS的题目 代码如下 include include include include include define LL ...
分类:
其他好文 时间:
2018-11-19 20:20:05
阅读次数:
242