树链剖分
pbihao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【BZOJ 3083】遥远的国度 树剖
一开始看到有换根操作可是把我吓了一跳,我还以为要上top-tree呢,结果一开题解。。。。。。。。。。心塞 如果除去换根操作的话就是一道裸的树链剖分了,没什么难度,但是加上换根操作以后,别怕,其实联系查询的点和现在的根节点只有4种可能(分3种操作),这里的讨论均基于以1为根节点的有根树讨论 1.x==rt 直接查询整个树 2.rt是x的祖先原创 2017-01-15 17:04:35 · 282 阅读 · 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 500021 using 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 · 283 阅读 · 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 · 240 阅读 · 0 评论 -
【BZOJ 4538】[Hnoi2016]网络 树链剖分+堆
很巧妙的一道题,因为是树上的操作,所以我们可以联想到树链剖分,但是存在这样的几个问题。 1.每一次查询都是查询不受影响的重要程度 2.每一个操作还可以撤回,当前的最大值在后面的操作中可能会撤回 3.懒惰标记的处理 主要就是这两个问题。 1.为了解决第一个问题,我们可以在每一次修改的时候修改当前需要修改的区间的补集,也就是说线段树维护的就是不经过改点的最大重要度,也就是该点被破坏以后不原创 2017-02-13 11:34:09 · 292 阅读 · 0 评论
分享