树链剖分
文章平均质量分 80
最菜的acmer
这个作者很懒,什么都没留下…
展开
-
HYSBZ - 2243(树链剖分)
题解:在树上路径的查询一看就是树链剖分,然后查询是如何查询呢,如果我这条链的头结点颜色和其父节点颜色一样那么我们答案就要减一,更新线段树的用一个l,r记录最右端和最左端的颜色,如果左区间的右端点颜色和右区间的左端点颜色一样那么就要合并减去一段即可#include#include#include#includeusing namespace std;#define root 1,1,n原创 2017-12-08 15:23:34 · 208 阅读 · 0 评论 -
POJ-3237(树链剖分+线段树)
题解:更改把路径上的边值都变为负值一看就是树链剖分,接着我们用点连着深度比较深的边的值设为边的值那么我们查询的时候当到达最近公共祖先的时候最近公共祖先的点的编号注意加一,接着就是线段树的更新用1和0表示区间变为负数或者不变为负数即可,最后要记录一下边队应的编号即可#include#include#include#includeusing namespace std;#define l原创 2017-12-23 15:47:10 · 373 阅读 · 0 评论 -
fzu2082(树链剖分)
题解:树链剖分模板题,边的数值改成与边两个深度比较大的端点的数值即可,最后减去公共祖先#include#include#include#includeusing namespace std;#define ls 2*rt#define rs 2*rt+1#define mid (L+R)/2#define lson ls,L,mid#define rson rs,mid+1,原创 2017-12-07 18:53:42 · 186 阅读 · 0 评论 -
HYSBZ1036(树链剖分)
题解:树链剖分模板题#include#include#include#includeusing namespace std;#define root 1,1,n#define ls 2*rt#define rs 2*rt+1#define mid (L+R)/2#define lson ls,L,mid#define rson rs,mid+1,R#define原创 2017-12-07 20:34:34 · 181 阅读 · 0 评论 -
hdu5405(dfs序+树链剖分+线段树)
题解:因为我要查询有多少,i到j的路径上有与u到v路径上的公共点,那么我们可以先求没有经过u到v路径的上点的平方的总和然后再用所有点权值的总和的平方减去他,那么就是答案。然后我们怎么操作能?因为用树链剖分的话不会经过的点的对应的轻儿子的结点,所以我们记录一些对应轻儿子的权值平方的总和,然后我们如果某链往另外一条链上跳的话说明我这个点是那个点的轻链,我们再补回去就好了,然后还有一种情况是我重儿子没有...原创 2018-07-18 10:49:35 · 314 阅读 · 0 评论