Solution

  
  对于原树一个节点\(x\):
  
  \(f_x(h)\)表示,\(x\)作为一个深度为\(h\)的点时,\(x\)及其子树的安排方案有多少(不考虑\(x\)具体在深度为\(h\)的哪个点)
    
  \(F_x(h)\)表示,对于一个固定的深度为\(h\)的节点\(y\),\(x\)在\(y\)或其子树中,\(x\)及其子树的安排方案有多少。
  
  则有关系:
\[
F_x(h)=\sum_{i\ge h}f_x(i)*2^{i-h}
\]
  对于叶子:
\[
F_x(h)=[h\le h_x]2^{h_x-h}
\]
  已知二者都可以表示成这些形式
\[
f_x(h)=\sum_{i\geq 0}c_i*2^{-ih}\\
F_x(h)=\sum_{i\geq 0}c_i*2^{-ih}
\]
  对于叶子\(x\),赋值后直接回溯:
\[
c_1=2^{h_x}
\]
  
  依照60分DP,可以推出由儿子到自己的转移(两个\(c\)分别是两个\(F\)的\(c\),\(c'\)是转移后的\(f_x\)的\(c\)):
\[
\begin{aligned}
f_x(h)&=F_l(h+1)F_r(h+1)\\
&=(\sum_{i\geq 0}c_i2^{-i(h+1)})(\sum_{j\geq 0}c_j2^{-j(h+1)})\\
&=(\sum_{i\geq 0}\frac{c_i}{2^i}2^{-ih})(\sum_{j\geq 0}\frac{c_j}{2^j}2^{-jh})\\
&=\sum_{i\ge0}{c'}_i2^{-ih}\\
\end{aligned}
\]
  当然,也可以在卷积完之后每个\(c_i\)除去\(2^i\)
  
  观察到这个卷积,再考虑边界,\(c\)的下标为\(0...siz[x]\),\(siz[x]\)为\(x\)子树中叶子数。暴力卷积,用树上背包思路分析,这一步的复杂度是全局\(\mathcal O(n^2)\)的
  
  得到自己的\(f\)后,由于父亲要使用自己的\(F\),所以根据定义式由\(f\)推出\(F\):
\[
\begin{aligned}
F_x(h)&=\sum_{h \le i<maxh}f_x(i)*2^{i-h}\\
&=\sum_{h \le i<maxh}\sum_{j\ge 0}c_j*2^{i(1-j)-h}\\
&=\sum_{j\ge0}\frac{c_j}{2^h}\sum_{h \le i<maxh}(2^{(1-j)})^i\\
&=\sum_{j\ge0}\frac{c_j}{2^h}\frac{(2^{1-j})^{maxh}-(2^{1-j})^{h}}{(2^{1-j})-1}\\
&=\sum_{j\ge 0}c_j(\frac{2^{(1-j)maxh}}{2^{1-j}-1}2^{-h}-\frac{1}{2^{1-j}-1}2^{-jh})
\end{aligned}
\]
  答案即\(F_1(0)\),\(\sum c_i\)
  
  PS:\(c_0\)没用

harmakik的更多相关文章

随机推荐

  1. odoo订餐系统之订单设计

    订餐系统的主要功能便是用户下单部分,这里我们分为表头mylunch_order和表体mylunch_order_line两张主要的数据表,表头主要记录订单的一些通用信息,比如下单的操作人员 下单日期 ...

  2. cgroup.conf系统初始配置

    # Slurm cgroup support configuration file # # See man slurm.conf and man cgroup.conf for further # i ...

  3. Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...

  4. SpringMvc返回Json调试

    spring-web-5.0.6.RELEASE.jar!/org/springframework/web/method/support/HandlerMethodReturnValueHandler ...

  5. centos7.2部署vnc服务记录

    不做过多介绍了,下面直接记录下centos7系统下安装配置vncserver的操作记录 0)更改为启动桌面或命令行模式 获取当前系统启动模式 [root@localhost ~]# systemctl ...

  6. maven 第一个Web项目——HelloWorld

    1.安装Maven,具体步骤,参照博客[maven的安装与配置]http://www.cnblogs.com/dyh004/p/8523260.html 2.配置阿里云为Maven中央仓库,具体步骤, ...

  7. Nginx入门【转】

    原文地址:http://blog.csdn.net/u012486840/article/details/53098890 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上 ...

  8. Linux实践四:ELF文件格式分析

    一.分析ELF文件头 二.通过文件头找到section header table,理解内容 三.通过section header table 找到各section 四.理解常见.text .strta ...

  9. python 中的列表(list)

    一.生成一个列表 直接生成 L1 = [1, 2, 3, 4, 5] 列表解析式 >>> L2 = [x for x in range(1, 10, 2)] #从1到10的迭代,步长 ...

  10. Python轻松爬取Rosimm写真网站全部图片

    RosimmImage 爬取Rosimm写真网站图片 有图有真相 def main_start(url): """ 爬虫入口,主要爬取操作 ""&qu ...