虚树入门。

简介

虚树,顾名思义就是不真实的树。

它往往出现在一类树形动态规划问题中。

换句话说,虚树实际就是为了解决一类树形动态规划问题而诞生的!

我们从一道经典的虚树题目入手

[SDOI2011]消耗战

链接:https://www.luogu.org/problemnew/show/P2495

题目大意

给出一棵树,每条边有边权。

有mm次询问,每次询问给出kk个点,问使得这kk个点均不与11号点(根节点)相连的最小代价

n<=250000,m>=1,∑k<=500000n<=250000,m>=1,∑k<=500000(m是smg..)

暴力dp

首先考虑m=1m=1,也就是只有一次询问的情况。我们考虑暴力dp

设f[x]f[x]为处理完以xx为根的树的最小代价

转移分为两种情况

1.断开自己与父亲的联系,代价为从根到该节点的最小值

2.不考虑该节点(前提是该节点不是询问点),把子树内的所有询问点都断开的代价

但是这样的复杂度是O(nm)O(nm)的,显然无法AC

然而我们发现∑k∑k是比较小的,我们可不可以对kk下手呢?

于是,虚树诞生了

虚树

思想

虚树的主要思想是:对于一棵树,仅仅保留有用的点,重新构建一棵树

这里有用的点指的是询问点和它们的lca

煮个栗子

比如这样的一棵树(没错就是样例)

对于样例中的三次询问,

3
2 10 6
4 5 7 8 3
3 9 4 6

那么它的虚树分别长这样

          

第二张比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兵狼破空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值