zoukankan      html  css  js  c++  java
  • [学习笔记] 组合数学

    常见结论

    结论 1:(n & m=m) 时,( ext C(n,m)) 是奇数。

    证明戳这

    结论 2:(sum_{i=0}^n ext{C}^2(n,i)= ext{C}(2n,n))

    两个盒子各有 (n) 个球,共取 (n) 个球的方案数是 ( ext{C}(2n,n)),这也相当于一个盒子取 (i) 个,另一个取 (n-i) 个。所以实际上这可以拓展到两个盒子有 (n,m) 个球的情况。

    结论 3:( ext{C}(n,m)= ext{C}(n-1,m-1)+ ext{C}(n-1,m))

    (n) 个元素取或不取。

    结论 4:(sum_{i=0/j}^{n} ext C(i,j)= ext C(n+1,j+1))

    证明用归纳法,可以证明 (n=0) 的情况成立。然后有:

    [sum_{i=0/j}^{n} ext C(i,j)=sum_{i=0/j}^{n-1} ext C(i,j)+ ext C(n,j) ]

    [= ext C(n,j+1)+ ext C(n,j)= ext C(n+1,j+1) ]

    结论 5:(sum_{i=0}^n i^2 ext{C}(n,i)=2^{n-2}n(n+1))

    结论 6:

    [D(n)=n!sum_{i=0}^nfrac{(-1)^i}{i!} ]

    [=ncdot D(n-1)+(-1)^n ]

    这个可以用二项式反演证!令 (f(i)) 为长度为 (i) 的排列数。那么有:

    [f(n)=sum_{i=0}^n inom{n}{i} cdot D(i) ]

    [D(n)=sum_{i=0}^n (-1)^{n-i} cdot inom{n}{i}cdot i! ]

    [=sum_{i=0}^n (-1)^{n-i} cdot frac{n!}{(n-i)!} ]

    [=n!sum_{i=0}^nfrac{(-1)^i}{i!} ]

    后面的递推式可以通过这个式子化出来。

    结论 7:

    [sum_{n+m=N}inom{n}{s}cdot inom{m}{t}=inom{N+1}{s+t+1} ]

    (N+1) 个球中取出 (s+t+1) 个球。相当于枚举第 (s+1) 个球的位置。

    例题

    例 1. 将长度为 (n) 的序列分成 (m) 段的方案数,允许段为空。或者,你会发现这和将 (n) 个相同的球放进 (m) 个不同的抽屉是等价的。

    终于找到一个能说服我的 理解 了!

    现在突然有了一种船新的理解!在 (n+m-1) 中选择 (m-1) 个分隔符,显然分出的序列可以为空。

    例 2. ( ext{HDU - 5794 A Simple Chess})

    可达点满足 ((x+y)mod 3=2) 可以归纳证明。每次 (x,y) 坐标和都会增加 (3)

    例 3. ( ext{arc110D - Binomial Coefficient is Fun})

    如果确定了 (b),答案就是非常好求的。所以一种思路就是先用组合数算 (b),再来算答案。在 (n+m) 中选择 (n) 个分隔符,将整个序列分成 (n+1) 段。显然我们不要求分成的段有顺序,于是不妨令前 (i,iin[1,n]) 段对应 (a_i) 选择的 (b_i)。最后一段相当于满足 (sum b_ile m) 的限制。答案就是 ( ext{C}(n+m,n+sum a_i))。只要选出 (n+sum a_i) 个数,因为 (a_i) 是固定的,方案也就固定了。

    ( ext{Upd:}) 可以利用 结论 7。推广一下可以得到 (n) 个组合数相乘的式子:(inom{sum b_i+n-1}{sum a_i+n-1})。接下来只用算 (sum_{sum b_ile m} inom{sum b_i+n-1}{sum a_i+n-1})。利用 结论 4 可知答案为 (inom{m+n}{sum a_i+n})

    例 4. ( ext{abc171F - Strivore})

    如果随便填会有重复的情况。考虑枚举原串的第一个字符的位置 (i),规定如果有相同字符,选择最后面的字符为原串字符。前 (i-1) 个位置为 (26^{i-1}),后面取 (k+m-i) 个位置放 (m-1) 个字符,为 (inom{k+m-i}{m-1})。剩余位置不能和左边最近的原串字符相同,但如果中间隔了另一个不同的原串字符就不影响,为 (25^{k-i+1})

    例 5. ( ext{[HNOI 2011] })卡农

    当所选集合有顺序时更方便我们考虑问题(相当于在 (m) 个位置放集合),不妨先不管同种音乐的限制,最后将答案除以 (m!) 即可。

    考虑题目的三个限制:

    • 所选集合不为空。
    • 两两集合不同。
    • 对于 (iin [1,n])(i) 在所选集合中出现次数和为偶数。

    对于第一个限制,我们就只能选 (2^n-1) 种集合。设 (dp_i) 为在前 (i) 个位置放集合的合法方案数。有个很神奇的转化 —— 确定前 (i-1) 个集合,相当于确定第 (i) 个集合中 (jin [1,n]) 出现次数的奇偶性。而 (i) 在某个集合只能出现 (0/1) 次,所以相当于确定了第 (i) 个集合。方案数为 ( ext{A}(2^n-1,i-1))

    不过可能出现第 (i) 个集合为空集的情况。这种情况的方案数为 (dp_{i-1})

    还要排除第 (i) 个集合与前面的某 (j) 集合相同的情况。那么所有数在 (i,j) 集合的出现次数必定为偶数,所以剩余 (i-2) 个集合方案数为 (dp_{i-2})。不过我们需要在前 (i-1) 个位置中给 (j) 找一个位置,有 (i-1) 的系数。(i,j) 集合的取值方案就是 (2^n-1-(i-2))

    例 6.(n) 个数里面取 (i) 个数异或的所有组合的和。(n le 1000, iin[1,n])

    对每一位进行计算。设某一位有 (k)(0),对于每个 (i),枚举从 (k)(0) 中选 (t) 个数,从 (n-k)(1) 中选 (i-t) 个数。方案数为 (inom{k}{t}cdot inom{n-k}{i-t}),这些方案是否有贡献和 (n-k) 的奇偶性有关。

    例 7. ( ext{agc043B - 123 Triangle})

    手玩一下发现第二行就没有 (3) 了,所以将整体 (-1),这不影响相邻两项的差。

    还有个性质:如果序列中有 (1),答案不可能为 (2)。因为 (1)(0,2) 都会变成 (1)。在这种情况下,我们就只用判断答案的奇偶性。

  • 相关阅读:
    Anagram
    HDU 1205 吃糖果(鸽巢原理)
    Codeforces 1243D 0-1 MST(补图的连通图数量)
    Codeforces 1243C Tile Painting(素数)
    Codeforces 1243B2 Character Swap (Hard Version)
    Codeforces 1243B1 Character Swap (Easy Version)
    Codeforces 1243A Maximum Square
    Codeforces 1272E Nearest Opposite Parity(BFS)
    Codeforces 1272D Remove One Element
    Codeforces 1272C Yet Another Broken Keyboard
  • 原文地址:https://www.cnblogs.com/AWhiteWall/p/12564854.html
Copyright © 2011-2022 走看看