博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容斥是个什么东西我不会啊?
阅读量:5077 次
发布时间:2019-06-12

本文共 1498 字,大约阅读时间需要 4 分钟。

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


容斥

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

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

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

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

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

\(=1\)

用容斥原理解决错排问题

通项公式:

\(ans[n]=n![\frac{1}{2!}-\frac{1}{3!}+...+(-1)^n\frac{1}{n!}]\)

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

正难则反,不等于的条件范围很大,不好满足,但是等于确是一个很强的约束,所以我们考虑分别计算出一个位置不满足错排、两个位置不满足错排。。。n个位置不满足错排。

因为我们要求的是错排的个数,所以我们要减去不合法的“一个位置不满足错排”的情况数目,但是减去的同时我们多减了一次“同时两个位置不满足错排”的情况(本来只应该被减一次,但是现在被减去了两次),所以我们要加上。但是这样的话就又多加上了“三个位置不满足错排”的情况。。。。。

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

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

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

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

\(ans[n]=\sum_{i=0}^{n-1}(-1)^i\times\frac{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 的方 案数. 每一时刻都不能为负.

转载于:https://www.cnblogs.com/fengxunling/p/10385609.html

你可能感兴趣的文章
linux编程(一)文件IO 目录
查看>>
数据结构基础温故-5.图(下):最短路径
查看>>
C# - 网络编程 之 Socket
查看>>
CSS中一个冒号和两个冒号有什么区别
查看>>
[2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路
查看>>
Chrome设置允许ajax跨域
查看>>
【opencv学习笔记一】opencv下载安装与VS2017开发环境配置
查看>>
svnserve配置文件详析
查看>>
Linux下查看软件的安装路径
查看>>
js总结:三级联动
查看>>
让一个元素相对于父元素固定定位
查看>>
ACM警示
查看>>
自动化构建工具 grunt & gulp
查看>>
PHP和Javascript里诡异的0和空
查看>>
50深入理解C指针之---指针与别名
查看>>
spark总结
查看>>
v3 Creating Custom Field Types收藏
查看>>
Opengles2.0入门
查看>>
linux下对qt编写的程序进行部署
查看>>
Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
查看>>