zoukankan      html  css  js  c++  java
  • 容斥是个什么东西我不会啊?

    注:本文参考了这位大佬的博客,详情请移步——戳我


    容斥

    为什么容斥系数乱七八糟但是最后算出来的答案却是正确的的呢。

    以一个常见的容斥系数为例子:(sum_{i=1}^nC_n^i(-1)^{i+1})

    (=sum_{i=1}^n(C_{n-1}^{i-1}+C_{n-1}^i) imes (-1)^{i+1})

    (=sum_{i=1}^{n}C_{n-1}^{i-1} imes (-1)^{i+1}+sum_{i=1}^{n-1}C_{n-1}^{i} imes (-1)^{i+1})

    (=sum_{i=1}^{n-1}C_{n-1}^{i} imes (-1)^{i+2}+C_{n-1}^0+sum_{i=1}^{n-1}C_{n-1}^{i} imes (-1)^{i+1})

    (=1)

    用容斥原理解决错排问题

    通项公式:
    (ans[n]=n![frac{1}{2!}-frac{1}{3!}+...+(-1)^nfrac{1}{n!}])

    emmm,通项公式没有办法快速算,好像也木有什么用。。。。

    正难则反,不等于的条件范围很大,不好满足,但是等于确是一个很强的约束,所以我们考虑分别计算出一个位置不满足错排、两个位置不满足错排。。。n个位置不满足错排。
    因为我们要求的是错排的个数,所以我们要减去不合法的“一个位置不满足错排”的情况数目,但是减去的同时我们多减了一次“同时两个位置不满足错排”的情况(本来只应该被减一次,但是现在被减去了两次),所以我们要加上。但是这样的话就又多加上了“三个位置不满足错排”的情况。。。。。

    以此类推,故公式为(ans[n]=sum_{i=0}^{n}(-1)^i imes C_n^i imes (n-i)!)

    但是这个玩意儿我们没有办法O(1)地计算,所以继续化简——

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

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

    (ans[n]=sum_{i=0}^{n-1}(-1)^i imesfrac{n!}{i!}+(-1)^n)

    (ans[n]=n*ans[n-1]+(-1)^n)

    容斥都有哪些形式?

    组合数形式

    比如说,对于至少满足一个条件的计算结果,一般长成这个样子——
    (sum_{i=1}^{n}C_{n}^i*f(i)),其中f(i)是容斥系数,对于上述问题来说是(-1)的i+1次方。
    而对于至少满足K个条件的计算结果,则是(sum_{i=1}^nC_n^i(f(i)=[n>=k]))
    看了大佬的博客说,如果我们允许(n^2)的复杂度,完全可以让程序帮忙计算这个容斥系数(来一个预处理就够了),一个一个递推即可。

    斯特林数形式

    还不会,咕咕咕,回来补。

    莫比乌斯函数形式

    还不会,咕咕咕,回来补。

    容斥系数怎么找?

    emmm....凑系数啊!可以打表也可以反演但是我还不怎么会。。。大家还是去看栋栋大佬的博客吧qwqwq

    技巧

    • 平方处理【例题 管道取珠】
      具体的大家可以去看我的题解——已经更新啦!~~
    • 反射法【例题】
      给定 S,T,K, 求每次 +1,−1, 用不超过 K 次操作从 S 变成 T 的方 案数. 每一时刻都不能为负.
  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/fengxunling/p/10385609.html
Copyright © 2011-2022 走看看