分拆数

分拆数

五边形数定理

我们观察

ϕ(z)=n=1(1zn)=1zz2+z5+z7z12z15+

发现大部分系数都为 0 且非 0 系数是 ±1 可以猜测 ϕ(z) 系数比较稀疏。事实上五边形数定理揭示了 ϕ(x) 的系数规律如下

ϕ(z)=k=+(1)kzk(3k1)2

下面我们通过 Ferrers 图证明五边形数定理(证明参考 OI Wiki),下面先引入两个概念:

互异偶分拆数:下面记作 p1(n) 表示将 n 的部分数为偶数的互异分拆方法数;

互异奇分拆数:下面记作 p2(n) 表示将 n 的部分数为奇数的互异分拆方法数;

我们可以发现

ϕ(z)=n=0(p1(n)p2(n))zn

我们只需要证明 |p1(n)p2(n)|1 即可。

我们可以构造部分数为偶数的互异分拆方法到部分数为奇数的互异分拆方法的双射证明。

画出每个互异分拆的 Ferrers 图。最后一行称为这个图的底,底上点的个数记为 a,连接最上面一行的最后一个点与图中某点的最长对角线,称为这个图的坡,坡上点的个数记为 b

我们发现某些情况下可以将底拼到坡或坡拼到底上在部分数为偶数的互异分拆方法到部分数为奇数的互异分拆方法进行转换(变换行数),如下图的互异偶分拆

.........

可以转换为下图的互异奇分拆

.........

或是下图的互异奇分拆

..........

可以转换为下图的互异偶分拆

..........

我们可以分析一下不能转换的情况,可以发现当底与坡有公共点且 ab1 时不能转换

  • a=b,n=i=0a1(a+i)=a(3a1)2,此时 [zn]ϕ(z)=k=0a1(1)a+k=(1)n.

  • a=b+1,n=i=0b1(b+i+1)=b(3b+1)2,此时 [zn]ϕ(z)=k=0b1(1)b+k=(1)n.

我们可以合并两种情况可以得到五边形数定理。

五边形数定理可以 O(nn) 递推出 1n 的分拆数。

ϕ(z)P(z)=1k=1n[zk]ϕ(z)[znk]P(z)+[z0]ϕ(z)[zn]P(z)=[n=0]

我们可以枚举 [zk]ϕ(z)0 时即可暴力递推出逆,也可以 O(nlogn) 多项式求逆。

题目

「HDU4651」 Partition#

O(nn) 递推分拆数板子。

「HDU4658」 Integer Partition#

H 基础上加上部分数为 k 的限制,考虑限制部分数为 kGF

Pk(z)=ϕ(zk)ϕ(z)=P(z)ϕ(zk)[zn]Pk(z)=k=0n[zk]P(z)[znk]ϕ(z)

可以 O(n) 暴力卷积。

作者:littlepinkpig

出处:https://www.cnblogs.com/littlepinkpig/p/17693478.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

你可以在这里自定义其他内容

作者:littlepinkpig

出处:https://www.cnblogs.com/littlepinkpig/p/17693478.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   little_pinkpig  阅读(91)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu