抛开挂分不谈

这场模拟赛真是太幽默了哈哈哈

Stage 1

不难注意到 fn=1(n+mm)

但是上述做法细节太多,尤其容易将 (n+mm) 写成 (n+mn) 导致 TLE 挂分。

所以我们应当参考题解学习高级做法。

首先不难发现, 记 gi=fim, 那么

(3){g0=0gi=im+igi1+1m+i(i1)

求出 gn 即可。

把下面的式子换个形式:

(4)(m+i)gi=igi1+1

(5)y=i0gixi=i1gixi

那么:

i1(m+i)gixi=i1(igi1+1)xi(6)my+xi1igixi1=i1xi+x2i1(i1)gi1xi2+x>i1gi1xi1my+xy=x1x+x2y+xy

整理:

(7)y+mxxx2y=1(1x)2

发现这是一阶线性微分方程的形式。

P(x)=mxxx2,Q(x)=1(1x)2

那么根据常数变易法, 有:

(8)y=exp(P(x)dx)Q(x)exp(P(x)dx)dx

P(x) 是有理函数:

(9)P(x)dx=(mx+m11x)dx=mlnx(m1)ln(1x)+C1

这里认为 x(0,1)

exp(P(x)dx)=C1xm(1x)1m(10)Q(x)exp(P(x)dx)dx=1(1x)2C1xm(1x)1mdx>=C1xm(1x)m1dx

用级数积分(事实上, 原微分方程是非初等的)

根据牛顿二项式定理,有:

(11)xm(1x)m1=i0(m+im)xm+i

那么

Q(x)exp(P(x)dx)dx=C1xm(1x)m1(12)=C1(C2+i0(m+ii)xm+i+1m+i+1)=C1+C2i0(m+ii)xm+i+1m+i+1

所以

(13)y=C3(1x)m1xm(C1+C2i0(m+ii)xm+i+1m+i+1)=C3(1x)m1xm+C2(1x)m1i0(m+ii)xi+1m+i+1

为了适合初始条件 y|x=0=0,[x1]y=1m+1,C3=0,C2=1

那么:

y=(1x)m1i0(m+ii)xi+1i+m+1(14)=j(1)j(m1j)i0(m+ii)xi+j+1i+m+1=nxnj(m1j)(n+mj1m)(1)jn+mj

所以

(15)gn=j(m1j)(n+mj1m)(1)jn+mj

O(mlogm) 计算即可。时间复杂度 O(Tmlogm)

看这个形式不知道有没有组合意义的理解。

真是太巧妙了!!!虽然比我原来做法复杂度劣一点,但是真是简单太多了。

Stage 2

T2。只会 O(n2k) 怎么办?什么?你说 n2000,k10?肯定是数据问题有问题,还是看题解吧!

题解

直接做非常难做, 但你不难发现, 长度为 n 的序列, 可以理解为 n+2 个点的树对应的 prufer 序列!

进一步, prufer 序列出现次数加 1 就是树上对应的点的度数。

又由于只有 n+1 个值, 因此等于钦定标号为 n+2 的点度数为 1 。那我们不妨将它作为根。

然后就可以动态规划了。

fx 表示大小为 x 的有根树的方案数。

gd,x 表示 d 个有根树, 且大小总和为 x 的方案数。

转移是简单的:

fx=d=1kgd,x1×x

gd,x=y=1xgd1,xy×fy×(x1y1)

对于 n, 答案就是 fn+1

组题人注:

可以做到更优的复杂度。这是供题人的原文:

利用全在线卷积优化,可以很轻松做到 O(nklog2n)

生成函数(指多项式求逆)下,复杂度 O(nklogn)

但是由于写 std 的人不知道如何多项式求逆优化到 O(nklogn), 而全在线卷积套上去意义不大, 所以就成了 O(n2k)

真是太巧妙了,这么难做的提为什么想不到图论!鞭策自己!

Conclusion

pig 给 dash 开门——抽象到机房了!

posted @   yinhee  阅读(53)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示