bb

首先,一个图是好树的充分必要条件是 i=1NXi=2N2

证明:对于有 N 个顶点的树来说,它恰好包含 N1 条边,并且其中一条边对总度数的贡献为 2,所以必要性是显然的。另外,如下所述,我们可以具体构造一个"直径最大的好树",因此充分性也得到证明。

假设存在一个好树,我们考虑它的最大直径。直径中的顶点除了两个端点外,度数都至少为 2,所以假设度数至少为 2 的顶点的个数为 K,那么 K+1 是解的上界。反过来,存在直径为 K+1 的好树。具体构造如下:

  • 将满足 Xi2 的顶点 i 按适当的顺序排列在一列中,并在相邻顶点之间添加边,形成一条路径。
  • 重复以下步骤直到不满足 Xi2 的顶点出现:从满足 Xi2 的顶点中选择一个顶点 i,如果它的度数不满足 Xi,则选择一个度数为 1 且尚未添加边的顶点 j,然后在顶点 ij 之间添加一条边(根据 i=1NXi=2N2,这个操作会恰好用完度数为 1 的顶点 j)。

通过上述构造方式,我们可以构造出直径为 K+1 的好树(请参考提示中的图示)。因此,如果存在好树,令 S 为满足条件的 X 的集合,则:

XSf(X)=XS((X 中大于等于 2 的整数的个数)+1)=|S|+XS(X 中大于等于 2 的整数的个数)=|S|+i=1N(满足 Xi2 的 XS 的个数)=|S|+(满足 X12 的 XS 的个数)×N=(满足 i=1NXi=2N2 的正整数序列 X 的个数)+(满足 i=1NXi=2N2X12 的正整数序列 X 的个数)×N=(满足 i=1NXi=N2 的非负整数序列 X 的个数)+(满足 i=1NXi=N3(1,1) 的非负整数序列 X 的个数)×N=((N2)+(N1)N1)+((N3)+(N1)N1)×N=(2N3N1)+(2N4N1)×N

因此,通过预计算阶乘和其逆元的值,我们可以在每个测试用例中以 O(1) 的时间复杂度解决这个问题。

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17683076.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起