树形动态山贼算法.pdfVIP

  • 0
  • 0
  • 约1.42千字
  • 约 1页
  • 2026-09-09 发布于北京
  • 举报

山贼题解

算法简述

本题的模型是树形状态压缩的动态规划。

首先考虑简单的题目模型:对于任何形态的有根树T,都可以建立其等效二叉树T’,

若在原树T中,结点x有儿子c1,c2,c3,…,ck,则在二叉树中,与之对应的结点x’有儿子

c1和h1,h1有儿子c2和h2,以此类推,hk-2有儿子ck-1和ck。并且所有hi都不能建

立分部。其他的树的结点的权均有一一对应关系。容易知道在T中的最优规划等效于在T’

中的最优规划。

对于二叉树,设计状态f[n][s]表示以第n个结点为根的子数中安排集合s的山贼

分部的最优获利。状态g[n][s]表示以第n个结点为子数不考虑根的安放情况下,安排集合

s的山贼分部的最优获利。

易知g[n][s]=max{f[cl][p]+f[cr][s-p]},其中cl,cr为n的两个子数,p为

s的某个子集。

且f[n][s]=max{g[n][p]+cost[n][s-p]}+value[s],其中p为s的子集,

cost[n][s]表示在结点n修建集合s的分部所获得的收益,value[s],表示某个结点相对于

集合s的收益。

程序实现

关于上述算法,最直接的实现是首先使用多叉树转二叉树,然后直接套

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档