[BZOJ4585][Apio2016]Fireworks 烟火表演(树形 DP + 凸包 + 左偏树)

这篇博客介绍了如何解决一道名为‘Fireworks’的题目,涉及树形动态规划(Tree DP)、凸包问题以及左偏树(Leftist Tree)的应用。博主详细阐述了状态定义、转移方程,并通过分析得出每个阶段的最优策略。最后,通过维护分段函数的拐点和利用左偏树实现了O(n log n)的时间复杂度解题方案。
摘要由CSDN通过智能技术生成

Address

洛谷 P3642
BZOJ 4585
UOJ #205
LOJ #2568

Solution

  • NOIP 2018 之后 A 掉的第一道题,祭
  • 看上去是水题,但是发现边权可以减一之后就不是那么容易了
  • 很容易想到状态: f [ u ] [ i ] f[u][i] f[u][i] 表示把 u u u 到子树内所有叶子的距离都调成 i i i 的最小代价(下面 l e n ( u , v ) len(u,v) len(u,v) 为边 ( u , v ) (u,v) (u,v) 的长度)
  • f [ u ] [ i ] = ∑ v ∈ s o n ( u ) max ⁡ j = 0 i { f [ j ] + ∣ l e n ( u , v ) − ( i − j ) ∣ } f[u][i]=\sum_{v\in son(u)}\max_{j=0}^i\{f[j]+|len(u,v)-(i-j)|\} f[u][i]=vson(u)j=0maxi{ f[j]+len(u,v)(ij)}
  • 可以大胆猜想 f [ u ] f[u] f[u] 是关于 i i i 的下凸函数
  • 假设 u u u 只有 v v v 一个子节点
  • i ∈ [ l , r ] i\in[l,r] i[l,r] f [ v ] f[v] f[v] 取得最小值
  • 然后分类讨论一下转移:
  • (1) 0 ≤ i ≤ l 0\le i\le l 0il
  • 这时候 j ∈ [ 0 , i ] j\in[0,i] j[0,i] ,最优的方案是把 ( u , v ) (u,v)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值