![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构—树链剖分
文章平均质量分 50
slongle_amazing
这个作者很懒,什么都没留下…
展开
-
[POJ3237]树的维护
传送门http://cojs.tk/cogs/problem/problem.php?pid=1583题目大意支持 1.单边修改 2.修改路径边权取相反数 3.查询路径边权最大值题解把边权转化为点权,根的点权设为一个影响查询的值const maxn=10010; var w:array[0..3*maxn,1..2]of longint; x:array[0..maxn原创 2016-02-13 12:42:35 · 315 阅读 · 0 评论 -
20160331模拟
#T1题目大意题解T2题目大意f=∑ni=1wi∗xi2,限定∑ni=1xi=n,给定{wi≥0},询问f的最小值f=\sum_{i=1}^n w_i*{x_i}^2,限定\sum_{i=1}^nx_i=n,给定\{w_i\ge0\},询问f的最小值 50pt n≤4,100pt n≤2000050pt~~~n\le 4,100pt~~~n\le 20000题解这个正解就一句话,正好我还想原创 2016-03-31 22:46:05 · 372 阅读 · 0 评论 -
[BZOJ3999] [TJOI2015]旅游
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3999题目大意给定一棵树,树上有权值,要求支持 查询树上两点a—>b(有方向)a—>b(有方向)间路径上max(xj−xi)max(x_j-x_i)且j到a的距离比i大j到a的距离比i大 以及路径整体+c+c题解树链剖分+线段树合并 注意细节!!const maxn=50040; t原创 2016-02-22 10:45:22 · 1125 阅读 · 0 评论 -
[BZOJ3626] [LNOI2014]LCA
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3626题目大意给定一棵树,询问∑bi=adep[lca(i,c)]\sum_{i=a}^bdep[lca(i,c)]题解ORZ 我们先考虑可以怎么求两个点的lcalca的深度,我们对其中一个到根上的所有点都+1,然后查询另一个点到根的所有点权和即可 然后对于本题的所有询问[L,R][L,R]都原创 2016-02-20 18:12:27 · 786 阅读 · 0 评论 -
[BZOJ3631] [JLOI2014] 松鼠的新家
传送门www.lydsy.com/JudgeOnline/problem.php?id=3631题目大意给定一棵无根树和一个序列,在这个序列上依次遍历,求每个点的访问次数(最后一个点的访问次数要-1)题解树剖const maxn=300010; var w:array[0..3*maxn,1..2]of longint; bite,fa,son,size,dep,top,po原创 2016-02-18 13:50:27 · 928 阅读 · 0 评论 -
[BZOJ3531] [SDOI2014] 旅行
传送门题目大意题解const maxn=100050; var w:array[0..3*maxn,1..2]of longint; ls,rs,summ,maxx:array[0..20*maxn]of longint; x,y,size,fa,dep,son,top,pos,root:array[0..maxn]of longint; i,j,k:long原创 2016-02-18 11:16:26 · 414 阅读 · 0 评论 -
树链剖分
树链剖分浅谈树链剖分树链剖分是分块的思想 将树上所有边分成轻重边,把重边连成重链,把轻边单独维护,重边连成的链放在数据结构中,根据两点间重链和轻边数量的限制,使得时间复杂度能够令人满意一些定义 重儿子:在uu为父亲的所有儿子中子树节点和最大的儿子 轻儿子:除重儿子以外的儿子 重边:父亲与重儿子的连边 轻边:父亲与轻儿子的连边 重链:把重边从上向下?连成一条链 一些数组 fa[i]:ifa[i]:i原创 2016-02-13 12:36:40 · 336 阅读 · 0 评论 -
[BZOJ2243] [SDOI2011]染色
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=2243题目大意支持 1.树链染色 2.查询树链颜色段数题解树剖后线段树维护区间左端点颜色右端点颜色和颜色段数,合并自己yy以下就好了,两条链向上合并时注意细节{$M 100000000,0,100000000} const maxn=100010; type data=reco原创 2016-02-13 14:03:47 · 409 阅读 · 0 评论 -
[SPOJ375]Query on a tree
传送门http://cojs.tk/cogs/problem/problem.php?pid=1672题目大意支持 1.单边修改 2.查询两点间最大边权值题解就是上一道[POJ3237]树的维护的弱化版嘛const maxn=10010; var w:array[0..3*maxn,1..2]of longint; x:array[0..maxn,1..3]of long原创 2016-02-13 12:47:28 · 361 阅读 · 0 评论 -
[BZOJ4196] [Noi2015]软件包管理器
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=4196题目大意支持 1.树链修改+查询 2.子树修改+查询题解树链剖分包含DFS序const maxn=100010; var w:array[0..3*maxn,1..2]of longint; seg:array[0..8*maxn,1..4]of longint;原创 2016-02-13 12:45:22 · 517 阅读 · 0 评论 -
[BZOJ1036] [ZJOI2008]树的统计Count
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1036题目大意支持 1.单点修改 2.查询路径点权最大值 3.查询点权路径和题解树链剖分模板入门题const maxn=30010; type data=record sum,max:longint; end; var w:array[0..3*maxn,1..2]o原创 2016-02-13 12:39:45 · 306 阅读 · 0 评论 -
数据结构总结
鉴于我已经不会写树状数组[捂脸],新开一坑QAQAQ树状数组树状数组支持 单点修改+区间和查询 单点修改+区间最值查询 区间加减+单点查询 查询/修改区间最值,查询/修改区间和,单点修改 lowbit(a)=a and (-a) 定义C[i]=A[i-lowbit(i)+1]+…+A[i] 讲到树状数组必有的一张图 我们可以发现对于任意一个C[i],如果修改了的话,会影响到的是C[i+l原创 2015-08-21 12:58:58 · 840 阅读 · 0 评论