多项式&生成函数_杂题

昨天上午 fateice 大神讲 dp 计数,下午听 zzq 讲微积分和线代入门(啊我一个老年选手为什么要去听入门啊喂

当 zzq 神带我复习了,不亏。

今天上午模拟赛 zzq 场,黄队说可能是最后一场信心赛了,算了,我三个题都莽的暴力不好说啥了。

哦还有,边分治+闵可夫斯基和的那个坑弃了咕咕咕咕咕咕


辛普森积分法__优雅的乱搞

对于一个函数的积分 ∫lrf(x)dx\int_{l}^rf(x)dxlrf(x)dx ,如果 f(x)f(x)f(x) 是不超过三次的,那么 ∫lrf(x)dx=f(l)+4f(mid)+f(r)6×(r−l)\int_l^rf(x)dx=\frac{f(l)+4f(mid)+f(r)}{6}\times (r-l)lrf(x)dx=6f(l)+4f(mid)+f(r)×(rl)

由于大多数情况下的函数是积不出来的,所以求积分就可以直接上辛普森积分。具体就是积某一段区间时,把这段区间当作是三次以内的函数来积,然后比较一下这段区间分成两半来积得到的答案,如果答案差不多就直接返回了,否则就递归。

然后避免函数有长得像坑一样的东西,可以强制精确到一定的值的时候再返回

double Sim(double l,double r){
    double mid=(l+r)/2.0;
	return (f(l)+4.0*f(mid)+f(r))*(r-l)/6.0;
}
double Integral(double l,double r){
    double mid=(l+r)/2.0;
	if(r-l<=limit)
		if(abs(Sim(l,r)-Sim(l,mid)-Sim(mid,r))<eps) 
			return Sim(l,r);
	return Sim(l,mid)+Sim(mid,r);
}

多项式&生成函数

多项式的板子还挺多的, fft、牛迭(几乎包括了所有基本运算)、 多点求值、插值、拉反。

然后会写板子了就能去切题了(假的


复读机 【集训队作业2019】

题意:有排成一排的 n(1≤n≤109)n(1\le n \le 10^9)n(1n109) 个球,你要把每个球染成k种颜色之一,每种颜色的球的个数都要是d的倍数,问方案数mod 19491001。时限1s。

subtask1:1≤k≤500000,d=21\le k \le 500000,d=21k500000,d=2

subtask2:1≤k≤1000,d=31\le k \le 1000,d=31k1000,d=3

分析:每种颜色的 EGF 为 ∑ixid(id)!\sum_i \frac{x^{id}}{(id)!}i(id)!xid ,答案就是 n![xn](∑ixid(id)!)n![x^n](\sum_i\frac{x^{id}}{(id)!})n![xn](i(id)!xid)

d=2d=2d=2 时,考虑求 ∑ix2i(2i)!\sum_i\frac{x^{2i}}{(2i)!}i(2i)!x2i,我们发现 ex=∑ixii!e^x=\sum_i \frac{x^i}{i!}ex=ii!xi 消去奇数项就是我们要求的东西,然后由于 e−x=∑i(−1)ixii!e^{-x}=\sum_i\frac{(-1)^ix^i}{i!}ex=ii!(1)ixi ,所以 ∑ixid(id)!=ex+e(−x)2\sum_i\frac{x^{id}}{(id)!}=\frac{e^x+e^{(-x)}}{2}i(id)!xid=2ex+e(x)

考虑求答案,二项式定理展开 (ex+e−x)k(e^x+e^{-x})^k(ex+ex)k 得到 ∑i=0k(ki)ex(2i−k)\sum_{i=0}^k{k \choose i} e^{x(2i-k)}i=0k(ik)ex(2ik)[xn]ekx=knn![x^n]e^{kx}=\frac{k^n}{n!}[xn]ekx=n!kn ,那么答案就是 n!12k∑i=0k(ki)(2i−k)nn!n!\frac{1}{2^k}\sum_{i=0}^k {k\choose i} \frac{(2i-k)^n}{n!}n!2k1i=0k(ik)n!(2ik)n

d=3d=3d=3 时,代入三次单位根 w3w_{3}w3 ,由于 1+w3+w32=01+w_3+w_3^2=01+w3+w32=0 ,然后对于任意正整数 kkk∑i=02w3ik=3[3∣k]\sum_{i=0}^2w_3^{ik}=3[3|k]i=02w3ik=3[3k] 。所以此时 ∑ixid(id)!=ex+ew3x+ew32x3\sum_i\frac{x^{id}}{(id)!}=\frac{e^{x}+e^{w_3x}+e^{w_3^2x}}{3}i(id)!xid=3ex+ew3x+ew32x

ex+ew3x+ew32xe^{x}+e^{w_3x}+e^{w_3^2x}ex+ew3x+ew32x 也可以二项式展开,同理得到类似的式子。

小朋友和二叉树

题意:给一个集合S,对每个x∈[1,m],问有多少个不同的带权二叉树满足其每个点的权值在S里面,且权值和=x,输出方案数mod 998244353。n,m≤100000。

分析:设答案的生成函数为 f(x)f(x)f(x)gggSSS 的普通生成函数,那么有 f(x)=gf2(x)f(x)=gf^2(x)f(x)=gf2(x) ,解二次方程即可。

DAG

题意:求n个点带标号的有向无环图个数,mod 998244353。n≤105n\le 10^5n105

分析:切入点就是枚举出度为0的点数 jjj∑j(ij)f[i−j]2j(i−j)\sum_j{i\choose j}f[i-j]2^{j(i-j)}j(ji)f[ij]2j(ij) 就是至少有 jjj 个点出度为0的方案数。

容斥一下 fi=∑j=1i(−1)j−1(ij)2j(i−j)fi−jf_i=\sum_{j=1}^i(-1)^{j-1}{i\choose j}2^{j(i-j)}f_{i-j}fi=j=1i(1)j1(ji)2j(ij)fij 。然后把它整成多项式,套bluestein变换,w=2w=\sqrt2w=2
fi=∑j=1i(−1)j−1(ij)wi2−(i−j)2−j2fi−jfii!wi2=∑j=1i(−1)j−1j!wj2fi−j(i−j)!w(i−j)2 f_i=\sum_{j=1}^i(-1)^{j-1}{i\choose j}w^{i^2-(i-j)^2-j^2}f_{i-j}\\ \frac{f_i}{i!w^{i^2}}=\sum_{j=1}^i\frac{(-1)^{j-1}}{j!w^{j^2}} \frac{f_{i-j}}{(i-j)!w^{(i-j)^2}} fi=j=1i(1)j1(ji)wi2(ij)2j2fiji!wi2fi=j=1ij!wj2(1)j1(ij)!w(ij)2fij
F=TF+1,F=11−TF=TF+1,F=\frac{1}{1-T}F=TF+1F=1T1


MSET,PSET

(这是个知识点,之前没见过,但感觉就是一般的组合问题形式化了)

  • MSET 大小为 iii 的元素有 a[i]a[i]a[i] 种不同的,无序组合在一起。
    ∑i(11−xi)ai=exp⁡(−∑iailn⁡(1−xi))=exp⁡(∑iai∑jxijj) \sum_i (\frac{1}{1-x^i})^{a_i}\\ =\exp(-\sum_ia_i\ln(1-x^i))\\ =\exp(\sum_ia_i\sum_j\frac{x^{ij}}{j}) i(1xi1)ai=exp(iailn(1xi))=exp(iaijjxij)

  • PSET 大小为 iii 的元素有 a[i]a[i]a[i] 个不同的,组合在一起。
    ∑i(1+xi)ai=exp⁡(∑iailn⁡(1+xi))=exp⁡(∑iai∑jxij(−1)j−1j) \sum_i (1+x^i)^{a_i}\\ =\exp(\sum_ia_i\ln(1+x^i))\\ =\exp(\sum_ia_i\sum_j\frac{x^{ij}(-1)^{j-1}}{j}) i(1+xi)ai=exp(iailn(1+xi))=exp(iaijjxij(1)j1)


有根无标号「奇树」计数

题意:定义一棵有根树为「奇树」,当且仅当其所有叶子深度都为奇数(根节点深度为 1)。小 P 对奇树十分感兴趣,他想知道有多少棵 n 个奇点(不是 n 个点)的有根无标号奇树(奇点深度为奇数,由上述定义根也是奇点)。你需要对于 n=1…m 分别输出答案。
m≤105m\le 10^5m105

分析:设答案的生成函数是 F(x)F(x)F(x)F(x)=xM(M(F(x))−1)F(x)=xM(M(F(x))-1)F(x)=xM(M(F(x))1)M()M()M() 就是 MSET 。牛顿迭代求解。

烷基计数

题意:求儿子数不超过 3 的有根树个数

分析:设答案的生成函数为 A(x)A(x)A(x),于是有 A(x)=1+xA(x)3+3A(x)A(x2)+2A(x3)6A(x)=1+x\frac{A(x)^3+3A(x)A(x^2)+2A(x^3)}{6}A(x)=1+x6A(x)3+3A(x)A(x2)+2A(x3) 。牛迭迭代求解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值