随笔分类 -  树链剖分

摘要:~~1A真舒服。~~ 喜闻乐见的树链剖分+SA。 一个初步的想法就是用树链剖分,把两个字符串求出然后hash+二分求lcp。。。不存在的。 因为考虑到这个字符串是有序的,我们需要把每一条重链对应的字符串和这个重链反过来对应的字符串拼起来构成一个新的字符串。我们用树链剖分拼出两个字符串。用树剖拼出的这 阅读全文
posted @ 2019-01-02 22:07 Xu-daxia 阅读(330) 评论(0) 推荐(0)
摘要:显然,暴力求解的复杂度是无法承受的。 考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是上面有几个已标记了的点(包括自身)。所以,我们不妨把 z 到根的路径上的点全部 +1,对于 l 到 r 之间的点 阅读全文
posted @ 2018-08-09 22:34 Xu-daxia 阅读(181) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const long long N=100010; 8 long long cnt,head[N]; 9 long long size[N],fa[N],ff[N][30],son[N],dep[N... 阅读全文
posted @ 2018-08-09 18:54 Xu-daxia 阅读(415) 评论(0) 推荐(0)
摘要:题意 给棵n个点的树。边有边权然后有三种操作 1、CHANGE i v 将编号为i的边权变为v 2、NEGATE a b 将a到b的所有边权变为相反数。 3、QUERY a b 查询a b路径的最大边权。 (n,q<=10000) 题解 树剖裸题。 边权下放。线段树记录最大值最小值即可。 阅读全文
posted @ 2018-08-09 17:06 Xu-daxia 阅读(236) 评论(0) 推荐(0)