题意略。

我们设 \([x^k]G_n(x)\) 代表深度为 \(n\) 的树,距离为 \(k\) 的点对数量,\([x^k]F_n(x)\) 为深度为 $ n $ 的树中,深度为 \(k\) 的节点数量。

首先列出转移式:

\[F_n(x)=x+\sum_{i=2}^{n-1}x^iF_{n-i}(x)
\]

稍微替换一下可以得到 \(F_n(x)=xF_{n-1}(x)+x^2F_{n-2}(x)+x-x^2\)。

然后来看一下 \(G_n(x)\) 应该如何推导。

容易发现每个黑色节点都在一条黑色节点组成的链上,且每个黑色节点一定挂着一个白色节点。

于是我们考虑通过这条链进行对 \(G_n(x)\) 的转移。

容易发现:

\[G_n(x)=\sum_{i=2}^{n-1}G_{n-i}(x)+\frac {F_{n-i}(x)(F_{n-i+1}(x)-x)} x+\frac {F_n(x)} x-1
\]

使用类似推导 \(F_n(x)\) 的方法,可以得到

\[G_n(x)=G_{n-1}(x)+G_{n-2}(x)+\frac {F_{n-1}(x)F_{n-2}(x)+F_n(x)-F_{n-1}(x)} x-F_{n-2}(x)
\]

直接使用多项式转移可以得到 \(80pts\)。

我们考虑动态维护 \(F_{n-1}(x)F_{n-2}(x)\),这样就不需要计算多项式乘法了。

容易发现 \(F_n(x)\) 实际上是对斐波那契数列的生成函数稍微修改后截取前 \(n+1\) 项。

设 \(\delta_n(x)=F_n(x)F_{n-1}(x)-F_{n-1}(x)F_{n-2}(x)=F_{n-1}(x)(F_n(x)-F_{n-2}(x))\)。

容易发现 \(\delta_n(x)\) 是一个只有两项的多项式和一个 \(n\) 次多项式卷积的结果,可以 \(O(n)\) 被计算出来。

于是 \(G_n(x)\) 就可以被 \(O(n)\) 计算了,能够达到 \(O(n^2)\) 的复杂度。

如果要优化到 \(O(n)\) 的空间复杂度,可以计算每一项个多项式的贡献,贡献可以通过斐波那契数列计算。

BSOJ5086题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. JSP两种声明变量的区别

    感谢大佬:https://blog.csdn.net/tiercel2008/article/details/11553899?utm_source=distribute.pc_relevant.no ...

  2. Mac 配置Apache Php编译ssl错误解决

    终端 Php编译错误解决 //错误信息 unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) i ...

  3. SpringMVC 解析(三) Controller 注解

    我在前面的文章中介绍了Spring MVC最核心的组件DispatcherServlet,DispatcherServlet把Servlet容器(如Tomcat)中的请求和Spring中的组件联系到一 ...

  4. Ubuntu20.04.3中telnet 127.0.0.1时Unable to connect to remote host: Connection refused

    本博客旨在自我学习使用,如有任何疑问请及时联系博主 今天遇到个稀奇古怪的问题: 调试emqx的时候一直econnrefused,检查服务时,突然发现在ubuntu上telnet localhost竟然 ...

  5. ThinkPHP5中使用第三方类库

    在TP5中有两种方式使用第三方类库,如果类库支持composer方式安装那就很方便了,使用composer安装的类库存储在Vendor目录下,可以直接使用,以phpmailer为例,使用如下命令安装: ...

  6. Spring系列18:Resource接口及内置实现

    本文内容 Resource接口的定义 Resource接口的内置实现 ResourceLoader接口 ResourceLoaderAware 接口 Resource接口的定义 Java 的标准 ja ...

  7. web开发 小方法3-position

    值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", " ...

  8. python-利用xlrd模块中读取有合并单元格的excel数据

    前言 对于excel中有合并单元格的情况,合并的单元格只能取到第一个单元格的值,合并的单元格后面的单元格内容的值为空,针对这个情况,写了下面一段代码实现, 对单元格进行判断,如果是传入的索引是合并单元 ...

  9. 五分钟,手撸一个Spring容器!

    大家好,我是老三,Spring是我们最常用的开源框架,经过多年发展,Spring已经发展成枝繁叶茂的大树,让我们难以窥其全貌. 这节,我们回归Spring的本质,五分钟手撸一个Spring容器,揭开S ...

  10. 【C# 程序集】.net core 3.0中动态卸载|卸载程序集

    原文:https://docs.microsoft.com/zh-cn/dotnet/core/dependency-loading/understanding-assemblyloadcontext ...