![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树链剖分
Mima_Reincarnation
这个作者很懒,什么都没留下…
展开
-
BZOJ2157 旅游
DescriptionRay 乐忠于旅游,这次他来到了T 城。T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路径。换句话说, T 城中只有N − 1 座桥。Ray 发现,有些桥上可以看到美丽的景色,让人心情愉悦,但有些桥狭窄泥泞,令人烦躁。于是,他给每座桥定义一个愉悦度w,也就是说,Ray 经过这座原创 2016-08-08 16:26:28 · 429 阅读 · 0 评论 -
BZOJ3531 旅行 树链剖分
题目大意:给定一棵树,点染色,修改点权,链上询问点权和或者最大值 主要思想是对每种颜色开一颗线段树,动态分配内存,染色时删除原来的点,加入到新线段树中即可。 需要注意的是不仅插入要更新信息,删除也要更新信息。 自己的代码:#include<cstdio>#include<cstring>#define safe(x,a) (x?x->a:0)#define gm 100001using原创 2016-12-26 21:14:18 · 430 阅读 · 0 评论 -
BZOJ4811: [Ynoi2017]由乃的OJ 重链剖分
题意:起床困难综合征出到树上,带单点修改和区间询问 很容易想到在线段树上维护每一位遍历所有操作后会变成什么,但是第一次交TLE了。。。 然后发现我以前是不是写了假的《又是nand》。。。我说怎么跑得这么慢。。。 维护上面说的这个东西并不需要64*2个bool变量,而是可以压到两个unsigned long long里,分别代表每一位输入为0和每一位输入为1。 将两个合并:若输入为0,经过左变原创 2017-04-11 16:57:34 · 1663 阅读 · 0 评论 -
BZOJ4543: [POI2014]Hotel加强版 长链剖分
给一个树,问有多少三元组满足两两距离相等。n<=100000 长链剖分应用之一:o(n)统计以深度为下标的可合并子树信息 在当前节点,令f(i)表示相对深度为i的节点个数,g(i)表示在子树外离当前点距离为i的点可以和子树内多少对点组成答案。 每次新来一个儿子,枚举长度,用当前g和儿子f以及当前f和儿子g更新一遍答案,然后用两边的f来更新g,再将儿子的f和g推入当前f和g。注意顺序问题。原创 2017-04-11 17:42:01 · 1540 阅读 · 0 评论 -
BZOJ4012: [HNOI2015]开店 重链剖分 可持久化线段树
http://www.lydsy.com/JudgeOnline/problem.php?id=4012 两点间距离:深度之和-2×LCA深度 http://blog.csdn.net/mima_reincarnation/article/details/54024494 ORZ16年我就会的东西现在怎么忘没了。。。那题是离线排序做,那么对于这题用可持久化线段树来维护树链剖分就可以了。#inc原创 2017-06-08 19:53:25 · 956 阅读 · 0 评论 -
BZOJ4381: [POI2015]Odwiedziny 分块 长链剖分
http://www.lydsy.com/JudgeOnline/problem.php?id=4381 若步长小于sqrt(n)则可以预处理每个点走某种步长走到跟的权值和然后减去LCA上面的部分;若步长大于sqrt(n)则暴力走,为了避免LCA算重,可以先防止两个点走到LCA,然后再特判能否走到LCA上。第一种情况要注意不要计算走过原创 2017-06-09 19:03:48 · 885 阅读 · 0 评论