『树形DP』[IOI2005]Riv 河流

这篇博客详细介绍了IOI2005年「Riv 河流」问题的解决方案,通过树形动态规划(DP)方法,计算在建立一定数量伐木场时的最小运输成本。文章阐述了状态定义、状态转移方程,并给出了代码实现。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述

题解

我们设 f [ x ] [ j ] [ k ] f[x][j][k] f[x][j][k]表示运输完了以 x x x为根的子树, i i i的祖先 j j j建立了伐木场,建立了 k k k个伐木场的最小运输代价。由于题目中说明了0号点一定要建立伐木场,故结果是 f [ 0 ] [ 0 ] [ K ] . f[0][0][K]. f[0][0][K].

我们可以将这道题拆分成两部分,我们另f数组表示在当前状态下,不选择选择 i i i的最小花费; g g g数组表示选择节点 i i i。有与 f [ x ] [ j ] [ k ] f[x][j][k] f[x][j][k]中的 j j j x x x的祖先,因此我们用一个栈记录节点 x x x的父亲即可。这里记为 f a = s t a c k [ j ] fa=stack[j] fa=stack[j],用 j j j枚举。

因为我们需要求出的时子树的答案,用 f [ x ] f[x] f[x]表示已经不选择 x x x的的, g [ x ] g[x] g[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值