zoukankan      html  css  js  c++  java
  • 五边形数

    (其实是广义五边形数定理学习笔记)

    很棒的博客

    广义五边形数定理:

    [large { prod_{i=1}^ infty (1-x^i) = sum_i (-1)^i ( x^{frac{i(3i-1)}{2}} + x^{frac{i(3i+1)}{2}})} ]

    背过就好了

    不难发现 ([x^n]prod _{i=1}^infty(1-x^i)) 的组合意义为 将 (n) 拆分成若干不同的正整数的方案数,并且拆成奇数个数的贡献系数为 (-1),偶数为 (1)

    Ferrers 图

    拆分方案可以用 Ferrers 图形象地表示出来。

    Ferrers 图的定义为若干行格子,长度和恰好为 (n),且长度严格递减。每一行表示拆出来的一个数。

    比如 18=7+6+4+1 的表示为:

    [egin{aligned} &0 0 0 0 0 0 0\ &0 0 0 0 0 0\ &0 0 0 0\ &0\ end{aligned} ]

    (m) 为最后一行的格子数, (s) 为对角线上的格子数。考虑构造一种映射关系。如果 (m le s),那么把最后一行扔到前 (m) 行的最后边;如果 (m > s),那么把 (m> s),那么把对角线拎出来扔到最后一行的下面。这样的话大多数情况都会让(行数的)奇偶构成双射。正负抵消后为 (0)

    但是有两种情况会出锅,一种是最后一行和对角线相等且相交:

    0 0 0 0 0

    0 0 0 0

    0 0 0

    变成

    0 0 0 0 0 0

    0 0 0 0 0

    0

    这时候构成单射,没有统计到。此时形状为梯形,可用等差数列表示:(设有 (k) 行)

    [k + (k + 1) + ... + (2k-1) = frac{(3k-1)k}{2} ]

    注意有个 (-1) 的系数,为:

    [-frac{(3k-1)k}{2} ]

    还有一种是最后一行比对角线多 (1) 且相交:

    0 0 0 0 0 0

    0 0 0 0 0

    0 0 0 0

    变成

    0 0 0 0 0

    0 0 0 0

    0 0 0

    0 0 0

    变成了不合法情况,不能构成双射,需要额外加上。此时的 (n) 为:

    [-frac{k(3k+1)}{2} ]

    所以最终的生成函数为:

    [sum_i (-1)^k (x^{frac{k(3k-1)}{2}} + x^{frac{k(3k+1)}{2}}) ]

    注意到小于等于 (n) 的有值的项的数量为 (O(sqrt n)) 级别的,于是可以使用暴力多项式算法。

  • 相关阅读:
    blocksit.js插件瀑布流
    防止点浏览器返回按钮,返回上一页的JS方法
    jquery 换肤功能
    HTML5获取地理位置
    百度api定位
    网站如何做到完全不需要使用jQuery
    让网页变成灰色代码
    利用html标签限制搜索引擎对网站的抓取收录
    高清ICON SVG解决方案
    加载动画
  • 原文地址:https://www.cnblogs.com/JiaZP/p/14686903.html
Copyright © 2011-2022 走看看