zoukankan      html  css  js  c++  java
  • Comet OJ

    题意

    (m)种武器,第(i)种有(a_i)个,贡献为(in[1,b_i])(n)个敌人,每个武器可以选择将贡献分给多个人,每个人都至少被贡献过。
    一个方案不同,为某个武器贡献不同,或某个人被贡献的不同。(武器具体贡献给谁其实并不重要)
    (n imes mle 10^5)(a_iin[1,10^5],b_iin[1,mod))

    做法一

    令总贡献为(a)(a)分给(m)个人:({a-1choose m-1})
    (a)上界太大了

    我们这样做,比如:(len_1,len_2,len_3,len_4)(len_1)可以有(iin[0,len_1))种个数,(len_2)可以有(iin[0,len_2))种个数...(len_1)(len_2)中有一个点可以选或不选,(len_2)(len_3)(len_3)(len_4)
    然后所有的个数选(n-1)个,则我们可以用(x^i)的系数表示选择(i)个的方案数,令(F_i)表示这个,然后就是(F_i^{a_i}),合并的时候( imes(1+x))

    暴力快速幂(O(nmlognloga_i)),用exp可以优化到(O(nmlogn)),但应该没什么用...

    做法二

    (displaystyle G=prod_{i=1}^{n}left[mathbf{OGF}left{0,underset{b_i}{underbrace{1,ldots,1}} ight} ight]^{a_i})

    [egin{aligned} Ans&=sum_{a=1}^{infty}([x^a]G)cdotinom{a-1}{m-1}\ &=sum_{a=0}^{infty}!left([x^{a}]dfrac{G}{x} ight)!cdotinom{a}{m-1}\ &=frac{1}{(m-1)!}sum_{i=0}^{infty}([x^i]F)i^{underline{m-1}} end{aligned}]

    多项式求导后:(displaystyle f^{(k)}(x)=sum_{i=k}^{infty}f_ii^{underline{k}}cdot x^{i-k}),则有(displaystylesum_{i=0}^{infty}f_ii^{underline{m-1}}=f^{(m-1)}(1))
    则有(Ans=frac{1}{(m-1)!}F^{(m-1)}(1))

    考虑(displaystyle F=frac{1}{x}prod_{i=1}^{n}left[mathbf{OGF}left{0,underset{b_i}{underbrace{1,ldots,1}} ight} ight]^{a_i})((m-1))阶导

    • (displaystyle t=prod_{i=1}^{n}t_i)(k)阶导,反复利用((fg)'=f'g+fg')
    • (displaystyle t^{(k)}=sum_{a_1+a_2+cdots+a_n=k}inom{k}{a_{1ldots n}}prod_{i=1}^{n}t_i^{(a_i)})
    • (displaystyle t^{(k)}=k![z^k]prod_{i=1}^{n}sum_{j=0}^{infty}frac{t_i^{(j)}}{j!}z^j)

    (f_i=mathbf{OGF}left{0,underset{b_i}{underbrace{1,ldots,1}} ight}),特殊的,(f_0=dfrac{1}{x},a_0=1),则(displaystyle F=prod_{i=0}^{n}f_i^{a_i})

    [egin{aligned}Ans&=frac{1}{hat m}F^{(m)}(1)\&=frac{1}{hat m}left(hat m!left[z^{hat m} ight]prod_{i=0}^{n}left(sum_{j=0}^{infty}frac{f_i^{(j)}}{j!}z^{j} ight)^{a_i} ight)(1)\&=[z^m]prod_{i=0}^{n}left(sum_{j=0}^{infty}frac{f_i^{(j)}(1)}{j!}z^j ight)^{a_i}end{aligned} ]

  • 相关阅读:
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun
    查看公钥
    Flutter 环境配置,创建工程
    Flutter 简介
    Mac版本 FinalShell SSH工具
    windows下如何生成公钥和私钥
    pyqt 打包为dmg文件
    apple 升级后shell切换为zsh
    dart 类共享变量
    python 获取一小时前的时间戳
  • 原文地址:https://www.cnblogs.com/Grice/p/12940354.html
Copyright © 2011-2022 走看看