——problem:有一群人去看电影,票有两种,一种是单票,一种是家庭票(允许一个家长和他所有子女),问怎样钱最少(相同情况取票数少的)

——solution:树形DP

——url:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=53

——————————————————————————————————

最开始的想法是从上而下,由祖先开始,假设父节点买家庭票或单票两种情况往下推。然后发现这样做方程都写不出。

正确的是

dp[x][0]表示使用个人票的耗费,dp[x][1]表示使用家庭票的耗费。

如果不考虑使用票的数目,可以有如下方程:


vs为个人票价格,vf为家庭票价格

dp[x][0] = vs + sigma min(dp[sub][0], dp[sub][1])
dp[x][1] = vf + sigma min( dp[sub][0] - vs, dp[sub][1] )


sub为x的儿子


注意:若本人买家庭票,他的儿子也可以照买家庭票。

相关文章:

  • 2022-02-06
  • 2022-02-01
  • 2021-06-30
  • 2021-08-06
  • 2021-07-10
  • 2021-09-09
  • 2022-12-23
  • 2022-02-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2021-09-12
  • 2022-01-03
  • 2021-08-27
相关资源
相似解决方案