qoj9230 Routing K-Codes 题解

首先这个图肯定不能有环,也不能有度数大于 \(3\) 的点。

也就是说这是一颗二叉树。我们假设父亲都比儿子小,根节点的值最小。

那么假设 \(u\) 点的值为 \(x\),它的儿子的值一定是 \(\{2x,2x+1\}\) 的子集。会发现 \(u\) 的子树内的权值和是一个关于 \(x\) 的一次函数。而且无论两个儿子中哪个取 \(2x\),哪个取 \(2x+1\),这个函数的斜率 \(k\) 都是不变的,影响的只是常数 \(b\) 的值。(这个可以手推验证一下)。于是我们就可以 dp 了。

\(dp_u=(k,b)\) 表示当 \(u\) 的值为 \(x\) 时,子树内的权值和最少为 \(kx+b\)\(k\) 一定,其实最小化的是 \(b\))。转移很简单,分类讨论哪个儿子为 \(2x\),哪个为 \(2x+1\) 即可。然后换根一下就可以求出以每个点为根时的 dp 值了。

\(u\) 为根时,如果 \(u\) 的度数为 \(1\),那么 \(x=0\)。否则 \(x=1\)。再带入 \(k,b\) 就可以计算答案了。

需要注意 \(x < 2^{32}\),也就是深度不能超过 \(32\),需要判一下。

posted @ 2024-10-05 15:51  Creeper_l  阅读(27)  评论(0编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 世间美好与你环环相扣 柏松
  3. 3 True love tired
  4. 4 一笑江湖 (DJ弹鼓版) 闻人听書_
  5. 5 最好的安排 曲婉婷
  6. 6 星星在唱歌 司南
  7. 7 山川 李荣浩
  8. 8 On My Way Alan Walker
  9. 9 百战成诗 王者荣耀·100英雄官方群像献礼歌
  10. 10 雪 Distance Capper / 罗言
  11. 11 Edamame bbno$ / Rich Brian
  12. 12 半生雪 七叔-叶泽浩
  13. 13 Catch My Breath Kelly Clarkson
  14. 14 Love Is Gone SLANDER / Dylan Matthew
  15. 15 Endless Summer Alan Walker / Zak Abel
  16. 16 悬溺 葛东琪
  17. 17 风吹丹顶鹤 葛东琪
  18. 18 Normal No More TYSM
  19. 19 哪里都是你 队长
  20. 20 Stronger Kelly Clarkson
  21. 21 廖俊涛
  22. 22 消愁 毛不易
  23. 23 The Runner Yubik
  24. 24 踏山河 七叔-叶泽浩
  25. 25 Waiting For Love Avicii
  26. 26 在你的身边 盛哲
  27. 27 Dream It Possible Delacey
  28. 28 凄美地 郭顶
  29. 29 满天星辰不及你 ycc
  30. 30 侧脸 于果
  31. 31 阿拉斯加海湾 蓝心羽
  32. 32 虞兮叹 闻人听書_
  33. 33 离别开出花 就是南方凯
  34. 34 盗墓笔记·十年人间 李常超 (Lao乾妈)
盗墓笔记·十年人间 - 李常超 (Lao乾妈)
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.