P9745 「KDOI-06-S」树上异或 题解

原题

  • 挺好的树形 dp ,正好 dp 不太熟练,练习一下
  • 赛时只想到了暴力和X7 的链的部分分,过于 naive 不说了
  • 先考虑链的情况,既然是二进制考虑按位拆分。设 gi,j,0/1 表示以 i 为根,从 i 点连通块的疑惑和第 j 位为 0/1 ,除去连通块部分的积的和。然后设 fi 表示以 i 为根的答案。
  • 初始状态:若 au 的第 i 位为 1 ,则 gu,i,1=1 ,否则为 0
  • 对于每个儿子,枚举二进制下每位 i 转移

{gi,j,0gi,j,0×(gi1,j,0+fi1)+gi,j,1×gi1,j,1gi,j,1gi,j,1×gi1,j,0+gi,j,1×(gi1,j,0+fi1)fi=j=0632j×gi,j,1

  • 链是相对比较好理解的,然后考虑树的部分。
  • 同理的, dp 的定义和链相同,初始状态相同。对于每个儿子,枚举二进制下每位 i 转移

{gu,i,0gu,i,0×(gv,i,0+fv)+gv,i,1×gv,i,1gv,i,1gu,i,0×gv,i,1+gu,i,1×(gv,i,0+fv)fu=i=0632i×gu,i,1

最终复杂度 O(nlogX)

posted @   FOX_konata  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示