• 洛谷P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐


    先考虑这样的一个问题:有 (n) 种颜色的球,每种有 (b_i) 个,求满足相邻不同色的排列的方案数。CF840C On the Bench

    考虑容斥,枚举有多少个违反了相邻不同色的限制,违反后可以将相邻同色的球看作一个整体,枚举有 (c_i) 段相邻,得:

    [largeegin{aligned} &sum_cleft(prod_{i=1}^n(-1)^{c_i}inom{b_i-1}{c_i} ight)frac{(sum b_i-c_i )!}{prod(b_i-c_i)!} \ =&sum_cleft(prod_{i=1}^n(-1)^{b_i-c_i}inom{b_i-1}{c_i-1} ight)frac{(sum c_i )!}{prod c_i!} \ end{aligned} ]

    (f(a,b)) 为将 (a) 个球分为 (b) 段后,所有方案中长度之积的和,考虑组合意义,其为 (a+b) 划分为 (b) 个正整数后,每个数 (-1) 的乘积之和,那么就是先在 (a+b-1) 个位置中插 (b-1) 个隔板,划分为 (b) 段,然后再在每一段中选一个位置来插板,也就是奇数编号的隔板为划分每个数,偶数编号的隔板为划分每一段 ,得答案为 (inom{a+b-1}{2b-1})

    发现将 (f(a,b)) 和之前考虑的问题结合起来就是链的答案,得:

    [large sum_bsum_cleft(prod_{i=1}^n(-1)^{b_i-c_i}inom{b_i-1}{c_i-1}f(a_i,b_i) ight)frac{(sum c_i )!}{prod c_i!} ]

    考虑每一种颜色的指数型生成函数:

    [largeegin{aligned} F_i(x)&=sum_cfrac{x^c}{c!}sum_b(-1)^{b-c}inom{b-1}{c-1}f(a_i,b) \ &=sum_cfrac{x^c}{c!}sum_b(-1)^{b-c}frac{(b-1)!}{(c-1)!(b-c)!}frac{(a_i+b-1)!}{(2b-1)!(a_i-b)!} \ &=sum_cfrac{x^c}{c!(c-1)!}(-1)^csum_{b geqslant c}^{a_i}(-1)^bfrac{(b-1)!}{(b-c)!}frac{(a_i+b-1)!}{(2b-1)!(a_i-b)!} \ &=sum_cfrac{x^c}{c!(c-1)!}(-1)^csum_{b geqslant 0}^{a_i-c}(-1)^{a_i-b}frac{(a_i-b-1)!}{(a_i-b-c)!}frac{(2a_i-b-1)!}{(2a_i-2b-1)!b!} \ end{aligned} ]

    可以卷积计算 (F_i(x)),得答案为 (prodlimits_{i=1}^n F_i(x)),分治处理即可。

    然后考虑环的情况,在开头为 (1) 且结尾不为 (1) 的情况统计答案,得其为开头为 (1) 的方案数减去开头结尾都为 (1) 的方案数,发现确定 (a) 个位置为 (1) 就是将 (F_1(x)) 向左平移 (a) 位。

    对于周期为 (T) 的环,其对应 (T) 个不同的排列,那么该环应当被计算 (T) 次,设 (m=sum a_i) 为总长,得若一个环有 (b)(1),则其会被算 (frac{b}{frac{m}{T}}) 次,那么在 (F_1(x)) 中除掉 (b),最后对答案乘 (m) 即可。

  • 相关阅读:
    sql server 2008数据复制方法
    排错技能:任务管理器中追踪某w3wp.exe是哪个IIS站点的application pool
    SplendidCRM中给来自EditView中的listbox控件设置选中值或数据源
    jQuery String Functions
    [转]jquery getJSON 数据联动(采用序列化和反序列化获取数据) .
    [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
    深入理解C语言
    Qt回忆录之配置开发环境
    360电话面试
    浅谈C++设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/lhm-/p/13881705.html
Copyright © 2020-2023  润新知