树倍增
文章平均质量分 80
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ4568 [Scoi2016]幸运数字
树上查两点间最大异或和 树倍增,每个点维护向上2^k个点的线性基,然后在查lca的时候合并 关于点权维护倍增略蛋疼-_- 合并线性基的时候就直接把一个线性基里的插到另一个里 复杂度O(m log n log^2INF) 合并的时候加点优化可以降掉一个logINF 接下来bb一些有关线性基和最大异或和的东西…… 首先线性基是一个拟阵,遗传性显然,交换性可以把大的里边找一个小的里没有的位原创 2016-05-10 11:04:18 · 2804 阅读 · 1 评论 -
BZOJ4535 [Hnoi2016]树
考虑每次复制操作,我们只需要知道复制这个子树的根以及原树就能知道新树里这一部分的形态,所以我们把每次复制操作复制的子树和最开始的一颗树都缩点,给每个缩点记录在原树里的根,父亲在原树里的编号。每个缩点和父亲缩点的距离为父亲在原树里与缩点父亲的根在原树里的距离+1,也就是这个缩点树的根到上一个缩点树的根在新树里的距离,维护原树和缩点树两个树倍增结构,询问的时候根据LCA在缩点树里的位置分类讨论即可原创 2016-04-29 13:49:30 · 859 阅读 · 0 评论 -
BZOJ4144 [AMPPZ2014]Petrol
做多源最短路,跑每个点到哪个加油站最近,记录每个点是哪个点来的,如果两个点之间有边并且两个点不是从一个点来的,那么两个加油站连一条边,然后跑最小生成树,在树上倍增即可 注意判不联通 #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-06-20 16:37:35 · 703 阅读 · 0 评论 -
BZOJ4556 [Tjoi2016&Heoi2016]字符串
恩,我们进行一些瞎YY,首先询问s[a~b]的所有子串与S[c~d]的最长LCP其实相当于询问s[a~b]的所有后缀与s[c~d]的最长LCP 进一步转化设suf[i]表示S的从第i个字符开始的后缀,则其实相当于询问这个 可以把d-c+1提到外面,就变成 这样只需要考虑左面的,考虑若答案为l(lb-l+1的位置,而在a=l,那么s[i~b]就是一个与s[c~d]有长度为l的LCP的子原创 2016-06-14 10:10:42 · 1448 阅读 · 0 评论 -
BZOJ3732 Network
最小生成树完了树倍增就好了……傻逼题…… #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAXN 30010 #define MAXM原创 2016-08-22 10:32:12 · 740 阅读 · 0 评论