树链剖分
pbihao
这个作者很懒,什么都没留下…
展开
-
【BZOJ 3083】遥远的国度 树剖
一开始看到有换根操作可是把我吓了一跳,我还以为要上top-tree呢,结果一开题解。。。。。。。。。。心塞如果除去换根操作的话就是一道裸的树链剖分了,没什么难度,但是加上换根操作以后,别怕,其实联系查询的点和现在的根节点只有4种可能(分3种操作),这里的讨论均基于以1为根节点的有根树讨论1.x==rt 直接查询整个树2.rt是x的祖先原创 2017-01-15 17:04:35 · 225 阅读 · 0 评论 -
【hdu 4897】Little Devil I
#include#include#include#define ls u<<1,l,mid#define rs u<<1|1,mid+1,r#define maxn 500021using namespace std;int T,n,m;struct Tree{ int lc[maxn*4],rc[maxn*4],flag[maxn*4],sum[maxn*4]; void p原创 2017-02-20 20:19:11 · 239 阅读 · 0 评论 -
【BZOJ 4127】Abs 树链剖分
注意到后面加的每一个数都是>=0的,所以最多有n次从负数加到正数的情况,所以记录一个最大的负数,然后暴力处理从负加到正的情况就好了。智障地方:1.树链剖分向上跳的时候比较的是h[a],h[b]而不是h[top[a]],h[top[b]]2.update之前没有push_down()好了,剩下的就是写代码了#include#include#include#include#in原创 2017-02-12 19:46:07 · 192 阅读 · 0 评论 -
【BZOJ 4538】[Hnoi2016]网络 树链剖分+堆
很巧妙的一道题,因为是树上的操作,所以我们可以联想到树链剖分,但是存在这样的几个问题。1.每一次查询都是查询不受影响的重要程度2.每一个操作还可以撤回,当前的最大值在后面的操作中可能会撤回3.懒惰标记的处理主要就是这两个问题。1.为了解决第一个问题,我们可以在每一次修改的时候修改当前需要修改的区间的补集,也就是说线段树维护的就是不经过改点的最大重要度,也就是该点被破坏以后不原创 2017-02-13 11:34:09 · 249 阅读 · 0 评论