树链剖分
文章平均质量分 81
johsnows
正在静下心来学算法的acmer
展开
-
hdu 5221 Occupation (树剖+线段树)
题意: 一棵树每个点都有权值,有三种操作 1 从x节点走到y节点,并将路径中的点的权值都取出来 2 将x节点的权值减去 3 将以x为根节点的子树的所有节点的值取出来。 每次操作后查询一次现在取出来的值为多少。 解题思路: 入门树剖+线段树题吧 第一次写树剖,写错了一个地方wa了好几发。 while(ty!=tx) { if(dee原创 2017-05-11 16:43:43 · 424 阅读 · 0 评论 -
poj 2763 Housewife Wind(线段树+树剖)
将边的值转成深度大的端点的点值,然后就是树剖找lca通过dfs序把一条链的点映射到线段树上的区间去查询就好了。 需要注意的一点是,传入线段树的是dfs序,但是线段数的操作不需要去管dfs序,直接根据传进来的参数做就行了,这是一个容易写错的地方。 代码: #include #include #define MID int mid=(l+r)>>1; #define lson原创 2017-08-09 22:26:53 · 310 阅读 · 0 评论