传送门 要是不强制在线,这题线段树合并or长链剖分直接暴搞好伐 但是强制在线就有些麻烦了 我们这么考虑:建立主席树,第$i$棵树存深度$\leq i$的点的信息,那么我们每一次$query$的时候,直接查询$dep_x+k$对应的主席树上$x$的子树对应区间的最小权值即可。 很板子的一道主席树题 ...
分类:
其他好文 时间:
2018-12-09 14:18:46
阅读次数:
167
传送门 一个套路题…… 树上差分+线段树合并即可 注意一个细节:$pushup$的时候如果最大值为$0$一定要把最大值对应的答案也设为$0$,否则会$WA$第二个点 另外如果这道题空限变小了请不要交这份代码,因为这份代码没有卡空间。。。 ...
分类:
其他好文 时间:
2018-12-05 12:23:32
阅读次数:
254
题解: 首先建出后缀自动机 我们考虑对于每个节点i 在其parent树上找到离其最近的j让s[j]子串在s[i]中出现>=2次以上(因为在j祖先节点必然都满足条件 但显然最近的最优) 所以把原parent树转化成新树 新树的最大高度即为答案 具体实现 可以倍增+线段树合并 E. Cool Sloga ...
分类:
其他好文 时间:
2018-12-04 20:09:53
阅读次数:
118
题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。 线段树合并板子题,没啥难度,注意开long long 不过这题$dsu$ $on$ $tree$确实更快 代码: ...
分类:
其他好文 时间:
2018-11-30 14:12:18
阅读次数:
117
"传送门" 一道线段树合并 首先不难看出树上差分 我们把每一次修改拆成四个,在$u,v$分别放上一个,在$lca$和$fa[lca]$各减去一个,那么只要统计一下子树里的总数即可 然而问题就在于怎么统计。直接暴力肯定是要咕咕的,那么线段树合并就派上用场了 总之就是每个点开一个动态开点线段树,然后一遍 ...
分类:
其他好文 时间:
2018-11-27 01:32:53
阅读次数:
279
既然选择要继续,就要继续努力辣 距离WC的时间也不多了,先复习和学习一波算法 数据结构 主席树[] 线段树合并[] CDQ分治[] 线段树分治[] 虚树[] 可持久化01trie[] 整体二分 KD tree[] 点分治[] splay[] LCT[] dsu[] 长链剖分[] 左偏树[] 算法 模 ...
分类:
其他好文 时间:
2018-11-24 11:45:20
阅读次数:
253
You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's call colour c dominating in the subtree of vertex v i ...
分类:
其他好文 时间:
2018-11-16 23:41:47
阅读次数:
304
两种显然的做法: 1.树上差分+线段树合并。$O(n\log n)$ 2.树链剖分转为序列上差分+线段树。$O(n\log^2 n)$ 后一种的代码: ...
分类:
其他好文 时间:
2018-10-31 01:11:22
阅读次数:
337
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3653 原来一直想怎么线段树合并。可是不会把角标挪一位。 查询的其实是子树内一段深度的点的 siz 和。因为是子树内,所以按 dfs 序建立主席树,角标是 dep ,值是 siz 。 注意 lo ...
分类:
其他好文 时间:
2018-10-29 10:24:13
阅读次数:
139
对于某些对子树的统计问题,我们固然可以用DSU on Tree来解决,但是一旦带上修改,甚至是加上历史化版本的查询,我们就不得不求助于其他的算法,本篇将对线段树合并进行讲解 线段树合并一般用于对子树的统计,一般的套路就是对树的每一个节点都开上一颗动态开点线段树,然后统计子树信息时,合并所有儿子信息, ...
分类:
其他好文 时间:
2018-10-27 01:30:36
阅读次数:
155