树链剖分
L_0_Forever_LF
一个热爱OI的OIer
展开
-
树链剖分
树链剖分就是把树拆成一系列链,然后用数据结构对链进行维护。大概是树上套数据结构,不同题有不同做法,可以套树状数组、线段树、堆…… 一般题都可以套线段树解决 时间不多,研究的不是很透彻,大概讲一下。树链剖分主要解决 在一棵树上进行路径修改、求极值、求和等问题,拓展还可以解决很多其他问题。 很重要一件事,,,,,树剖不能删边或增边,删边增边的学LCT 开始正题定义:原创 2015-03-30 13:53:20 · 597 阅读 · 1 评论 -
hdu 5759 2016 Multi-University Training Contest 3 Gardener Bo 解题报告
这题。。。。不想评价了题意:给一棵树,两个操作,每次将一个点和他的孩子,孙子节点的值+c 或询问 f(u),题解:对于每次加值的操作,我们可以分别算出对这些点加了c后,对于其他点的f值的贡献,官方题解给了公式,其实还是比较好懂的然后对于4种贡献,我们分开维护1:对于每个点,(size(v)+1)是固原创 2016-09-22 13:25:37 · 1012 阅读 · 0 评论 -
BZOJ4012: [HNOI2015]开店
询问颜色在[L,R][L,R]区间的点到一个点的距离和,强制在线这题有两个做法,一个是动态树分治我不会,另一个是树剖 算u,vu,v两点在树上的距离我们可以用u,vu,v到根的距离和减2倍LCA(u,v)LCA(u,v)到根的距离和,那对于多个vv的话,可以将每个vv到根的路径上每条边在那个线段树上加一下,∑LCA(u,v)\sum LCA(u,v)就是uu到根上路径上的和。 那么将这个做法推广原创 2016-10-24 19:40:11 · 619 阅读 · 0 评论 -
BZOJ3133: [Baltic2013]ballmachine
..原创 2017-01-17 10:38:54 · 917 阅读 · 0 评论 -
BZOJ4515: [Sdoi2016]游戏
传送门(这篇写得比我好qwq s到t的链可以拆成两条纵链 令dis[x]表示x到根的距离 对于一条纵链上的一个点x,添加的数就可以看成 (dis[x]-dis[t])* k+b =dis[x]*k-dis[t]*k+b =k*dis[x]+B 很像直线的表达式y=kx+b 树剖,问题变成线段树维护多条直线在区间内的最小值 对于一条链,因为这个区间内的dis是递增的即x坐标递增,这个原创 2017-12-01 20:59:41 · 452 阅读 · 0 评论 -
BZOJ3862: Little Devil I
肯定是树剖做分析一下3种操作 1:翻转一条链,直接翻 2:翻转与一条链相邻的边 可以发现,与一条链相邻的边中,是与父亲相连的边只有顶端的那一条,这一条可以直接暴力翻转,然后我们重新定义与链相连的边是链上每个点和儿子相邻的边中不在链上的边 考虑链上每个点和儿子的边,按轻重分类,对于轻边,我们也不需要考虑他们,因为查询时遇到的轻边是log条的,我们可以对这个点打标记,查询时暴力查询每条轻边父亲的原创 2018-01-13 09:54:42 · 314 阅读 · 0 评论