DTOJ #2244. sub

题意

给出一棵NN个节点的无根树,节点ii有权值ViV_i

现在有MM次操作,操作有如下两种:

1xy1 x y将节点x的权值VxV_x修改为yy

22 选择一个连通块(也可以不选择),使得点权和最大,输出这个点权和。

题解

直观的想法是ddp,但代码复杂度较高且常数较大。
考虑一条链,就直接用线段树维护连续区间和的最大值。推广到树上,树剖一下,利用每个点到根的路上不会有超过log条轻边的性质,维护每个点为根,在它的轻子树内的最大联通块,对每一条重链都在线段树按照链的方法查询,复杂度即可做到O(nlog2n)O(nlog^2n)

发布了159 篇原创文章 · 获赞 1 · 访问量 9101
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览