Examples

P8329 [ZJOI2022] 树 解题报告

P8329 [ZJOI2022] 树 解题报告:

更好的阅读体验

题意

生成两棵 n 个结点的有根树 S,T,其中 S 内要求父亲编号小于儿子编号,T 内要求儿子编号小于父亲编号,求两棵树叶子节点(不包括根)互补的方案数。对于 n[2,N] 求出答案。

1N500

分析

我的计数力还不高啊/ll。

枚举第一棵树的叶子集合,第二棵树的叶子集合为恰好,容斥成钦定:(f1(S) 为第一棵树叶子集合为 S 的方案数,f2(S) 为第二棵树非叶子集合S 的方案数)

Sf1(S)T(1)|S||T|f2(T)=S(1)|S|f1(S)T(1)|T|f2(T)

考虑对这个式子直接 dp,令 fk,i,j 表示 dp 到了编号 k 的结点,目前前面钦定了 i 个非叶子结点,后面提前钦定了 j 个非叶子节点的容斥系数和。

分讨列出转移方程,大概就是枚举结点分配给哪棵树,然后再确定另一棵树是否钦定它来容斥(很神秘):

  • 这个结点分配为第一棵树的叶子,第二棵树钦定:fk+1,x,yxyfk,x,y
  • 这个结点分配为第一棵树的叶子,第二棵树不钦定:fk+1,x,yxyfk,x,y+1
  • 这个结点分配为第二棵树的叶子,第一棵树钦定:fk+1,x,yxyfk,x,y
  • 这个结点分配为第二棵树的叶子,第一棵树不钦定:fk+1,x+1,yxyfk,x,y

复杂度 O(n3)

代码

数据出了就补。

posted @   xiaoziyao  阅读(167)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示