博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[xsy2363]树
阅读量:5925 次
发布时间:2019-06-19

本文共 1595 字,大约阅读时间需要 5 分钟。

设$f_{i,j}$表示$i$个点的树,权值为$j$且可以不选根的方案数,$g_{i,j}$表示$i$个点的树,权值为$j$且必选根的方案数

首先$g_{1,1}=0$

我们可以把原树连上一个新的子树,转移有四种情况,其中黑点表示原来在最大独立集中的点

$\begin{align*}g_{i,j}&\leftarrow\sum\limits_{a=1}^{i-1}\sum\limits_{b=1}^{j-1}g_{i-a,j-b}f_{a,b}\\f_{i,j}&\leftarrow\sum\limits_{a=1}^{i-1}\sum\limits_{b=1}^{j-1}f_{i-a,j-b}g_{a,b}\\f_{i,j}&\leftarrow\sum\limits_{a=1}^{i-1}\sum\limits_{b=1}^{j-1}f_{i-a,j-b}f_{a,b}\\f_{i,j-1}&\leftarrow\sum\limits_{a=1}^{i-1}\sum\limits_{b=1}^{j-1}g_{i-a,j-b}g_{a,b}\end{align*}$

最后一条是因为两个原来在最大独立集中的点相邻,我们要削除一个点

注意到转移是卷积的形式,设$G_{i}(x)$为$g_{i,1\cdots n}$的生成函数,$F_i(x)$为$f_{i,1\cdots n}$的生成函数,我们有$\begin{align*}G_i(x)=\sum\limits_{a=1}^{i-1}G_{i-a}(x)F_a(x),F_i(x)=\sum\limits_{a=1}^{i-1}F_{i-a}(x)F_a(x)+F_{i-a}(x)G_a(x)+\dfrac{G_{i-a}(x)G_a(x)}x\end{align*}$

可以直接对$f_{1,1\cdots n}$和$g_{1,1\cdots n}$DFT后用点值计算$G_{2\cdots n}$和$F_{2\cdots n}$,最后再IDFT回来

这题是不是可以暴力DFT啊23333

#include
typedef long long ll;const int mod=998244353;ll mul(ll a,ll b){return a*b%mod;}ll ad(ll a,ll b){return(a+b)%mod;}ll de(ll a,ll b){return(a-b)%mod;}ll pow(ll a,ll b){ ll s=1; while(b){ if(b&1)s=mul(s,a); a=mul(a,a); b>>=1; } return s;}int rev[512],N,iN;void pre(int n){ int i,k; for(N=1,k=0;N
<<=1)k++; for(i=0;i
>1]>>1)|((i&1)<<(k-1)); iN=pow(N,mod-2);}void swap(ll&a,ll&b){a^=b^=a^=b;}void ntt(ll*a,int on){ int i,j,k,t,w,wn; for(i=0;i
>1;k++){ t=mul(w,a[i/2+j+k]); a[i/2+j+k]=de(a[j+k],t); a[j+k]=ad(a[j+k],t); w=mul(w,wn); } } } if(on==-1){ for(i=0;i

转载于:https://www.cnblogs.com/jefflyy/p/8776328.html

你可能感兴趣的文章
读书笔记--SQL必知必会02--检索数据
查看>>
C#关键字as出现的错误
查看>>
[九省联考2018]IIIDX
查看>>
陶哲轩实分析 习题 13.4.10
查看>>
Java并发编程——线程池的使用
查看>>
[转]Javascript 面向对象编程(一):封装
查看>>
golang交叉编译:Linux - Windows
查看>>
C#设计模式:装饰者模式(Decorator Pattern)
查看>>
python机器学习(2:KNN算法)
查看>>
ssh连接超时问题解决
查看>>
【经典算法】——KMP,深入讲解next数组的求解
查看>>
数独个人项目
查看>>
区间覆盖问题 贪心
查看>>
超级楼梯 递推动规
查看>>
Linux C 创建目录函数mkdir相关(转-清新居士)
查看>>
老程序元对于新程序猿交代的事(身体是革命的本钱)
查看>>
spark共享变量
查看>>
了解oracle数据库的情况
查看>>
结构体初始化函数
查看>>
c++ 拾遗
查看>>