给你一颗有$2n-1$个节点的树,这一棵树的非叶节点均有两个儿子,左儿子与它连红边,右儿子与它连绿边,定义节点$i$的不便利值为
$c_i\cdot(a_i+x)\cdot(b_i+y)$
其中$x$表示根节点到节点$i$的未加粗红边数量,$y$表示根节点到节点$i$的未加粗绿边数量。
求加粗边数量为$n-1$的所有叶节点的不便利值。
链接
题解
一道比较好的树形dp题。
将每一个城市标号$1$到$n-1$,乡村标号$n$到$2n-1$,设$dp[i][j][k]$表示标号后的$i$号节点到根节点要走过$j$条没有翻修的公路和$k$条没有翻修的铁路最小的不便利值。
设$l[i]$指的是通过公路连接$i$号结点的城市或乡村,$r[i]$指的是通过铁路连接$i$号结点的城市或乡村,那么
如果$i$是乡村,直接暴力算不便利值即可,即
$dp[i][j][k]=c_i\cdot(a_i+j)\cdot(b_i+k)$
如果$i$是城市,因为最多翻修$n-1$条路,所以考虑对通向每一个城市的公路或铁路进行翻修。
翻修通往城市$i$的公路的不便利值是$dp[l_i][j+1][k]+dp[r_i[j][k]$(因为通向$i$的铁路没翻修),铁路同理,即
$dp[i][j][k]=\min(dp[l_i][j+1][k]+dp[r_i[j][k],dp[l_i[j][k]+dp[r_i][j][k+1])$
所以就得到了转移方程。
最后善意的提醒一句,本题卡空间,大佬们可以将$dp$的一维改成$dfn$,蒟蒻不会,只能暴力
代码
1 |
|