洛谷P4099: [HEOI2013]SAO(类树上背包+前缀和优化)

本文详细介绍了洛谷P4099题目的解决方案,该题涉及树上动态规划(树上背包)和前缀和优化。通过分析拓扑序,建立dp状态转移方程,利用前缀和技巧,实现了O(n^2)的时间复杂度求解树上问题。
摘要由CSDN通过智能技术生成

洛谷P4099: [HEOI2013]SAO

原题链接: https://www.luogu.com.cn/problem/P4099

题解

由题意可知给出的是一棵树,考虑树上 d p dp dp
因为题目对拓扑序有限制,不妨设 f x , p f_{x,p} fx,p 表示拓扑遍历以 x x x 为根的子树, x x x 在拓扑序中第 p p p 位的序列数。考虑转移方程,假设目前已经遍历 x x x 的前 i − 1 i-1 i1 个儿子,正在用第 i i i 个儿子 s o n son son 进行更新。
记:

  • s o n son son 是当前正在更新的儿子
  • s i z X sizX sizX x x x 与其前 i − 1 i-1 i1 个儿子构成的连通块的大小(原拓扑序长度)
  • s i z S sizS sizS 是以 s o n son son 为根的子树的大小
  • g x , p g_{x,p} gx,p 表示前 i − 1 i-1 i1 个儿子更新的结果(与 f x , p f_{x,p} fx,p 作区分)
  • p r e = p − 1 pre=p-1 pre=p1 表示原来序列在 x x x 前的节点数
  • s u f = s i z X − p suf=sizX-p suf=sizXp 表示原来序列在 x x x 后的节点数

若边 ( s o n , x )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值