容斥原理

容斥原理指的是一种排重,补漏的计算思想,形式化的来说,我们有如下公式:
\[\left | \bigcup_{i=1}^nS_i \right |=\sum_{i}|S_i|-\sum_{i,j}|S_i\cap S_j|+...+(-1)^{n-1}\left | \bigcap_{i=1}^nS_i \right |\]

设\(P=\{1,2,...,n\}\),则容斥原理还有如下表现形式:
\[\left | \bigcup_{i=1}^nS_i \right |=\sum_{T\subseteq P}(-1)^{|T|-1}\left | \bigcap_{i\in T} S_i \right |\]

运用典型

容斥原理在很多计数题中都得到了很好的运用,最经典的就是欧拉函数计算式的推导。

定理:设\(n=p_1^{a_1}\times p_2^{a_2}\times ...\times p_k^{a_k}\),则有\(\phi(n)=n\times \sum_{i=1}^k(1-\frac{1}{p_i})\)。

证明:
\(\phi(n)\)的定义为\(1-n\)的整数中与\(n\)互质的数的个数,于是所有\(p_1,p_2,...,p_k\)的倍数都不符合要求。设\(S_i\)代表\(1-n\)内\(p_i\)的倍数所组成的集合,那么可以得到:
\[\phi(n)=n-\left | \bigcup _{i=1}^kS_i \right |\]

利用容斥原理,我们可以得到:
\[\phi(n)=n-\sum_{T\subseteq P}(-1)^{|T|-1}\left | \bigcap_{i\in T} S_i \right |\]

不难得到
\[\left | \bigcap_{i\in T} S_i \right |=\frac{n}{\prod_{i\in T}p_i}\]

于是
\[\phi(n)=n-\sum_{T\subseteq P}(-1)^{|T|-1}\frac{n}{\prod_{i\in T}p_i}\\\phi(n)=n\times (1-\sum_{T\subseteq P}(-1)^{|T|-1}\frac{1}{\prod_{i\in T}p_i})\]

而由多项式乘法可以得到:\[1-\sum_{T\subseteq P}(-1)^{|T|-1}\frac{1}{\prod_{i\in T}p_i}=\sum_{i=1}^k(1-\frac{1}{p_i})\]

所以证得结论:\[\phi(n)=n\times \sum_{i=1}^k(1-\frac{1}{p_i})\]

Min-Max容斥

类似与容斥原理,我们有一种作用于最大最小值函数的容斥计算方法,称为\(\min-\max\)容斥。

仍设\(P=\{1,2,...,n\}\),则有

\[\max_{i=1}^n\{x_i\}=\sum_{T\subseteq P}(-1)^{|T|-1}\min_{i\in T}\{x_i\}\]

普通的\(\min-\max\)容斥还有另一种很常见的形式,即\(\min-\max\)具有对称性:
\[\min_{i=1}^n\{x_i\}=\sum_{T\subseteq P}(-1)^{|T|-1}\max_{i\in T}\{x_i\}\]

具体证明可以参考这篇博客

运用典型

\(\min-\max\)容斥最经典的运用就是结合数学期望的线性性,在求解\(\min-\max\)期望的题目中化繁为简,灵活转换。

形象的说,在期望中,两个不相关随机变量\(A,B\)不满足:\[E(\max(A,B))=\max(E(A),E(B))\\ \ \\ E(\min(A,B))=\min(E(A),E(B))\]

但是我们可以利用\(\min-\max\)容斥在最大最小值间建立联系:

\[E(\max_{i=1}^n\{x_i\})=\sum_{T\subseteq P}(-1)^{|T|-1}E(\min_{i\in T}\{x_i\})\\ \ \\ E(\min_{i=1}^n\{x_i\})=\sum_{T\subseteq P}(-1)^{|T|-1}E(\max_{i\in T}\{x_i\})\]


『正睿OI 2019SC Day3』的更多相关文章

  1. 『正睿OI 2019SC Day8-Day17』

    于是就迎来\(10\)天的自闭考试了,每天写点小总结吧. Day8 第一天就很自闭啊,考题分别是数学题+建模题+图论. 前两道题都没有什么算法,但是难度还是有的,于是就做不太出来,特别是第一题.第二题 ...

  2. 『正睿OI 2019SC Day7』

    简单数论 质因子分解 素性测试 素性测试指的是对一个正整数是否为质数的判定,一般来说,素性测试有两种算法: \(1.\) 试除法,直接尝试枚举因子,时间复杂度\(O(\sqrt n)\). \(2.\ ...

  3. 『正睿OI 2019SC Day5』

    网络流 网络流的定义 一个流网络\(G=(V,E)\)为一张满足以下条件的有向图: 每一条边有一个非负容量,即对于任意\(E\)中的\((u,v)\) , 有\(c(u,v)\geq0\). 如果\( ...

  4. 『正睿OI 2019SC Day4』

    总结 今天是一场欢乐的\(ACM\)比赛,于是我队得到了全场倒数的好排名. 好吧,其实还是怪自己不能怪队友啦.对于\(ACM\),可能最主要的还是经验不足,导致比赛的时候有点紧张.虽然队友为了磕一道题 ...

  5. 『正睿OI 2019SC Day1』

    概率与期望 总结 老师上午几乎是在讲数学课,没有讲什么和\(OI\)有关的题目,所以我就做了一点笔记. 到了下午,老师讲完了有关知识点和经典模型,就开始讲例题了.前两道例题是以前就做过的,所以没有什么 ...

  6. 『正睿OI 2019SC Day6』

    动态规划 \(dp\)早就已经是经常用到的算法了,于是老师上课主要都在讲题.今天讲的主要是三类\(dp\):树形\(dp\),计数\(dp\),\(dp\)套\(dp\).其中计数\(dp\)是我很不 ...

  7. 『正睿OI 2019SC Day2』

    分治 普通分治 普通分治是指针对序列或平面问题的分治算法. 思想 普通分治的思想是指将一个序列问题或平面问题通过某种划分方式划分为若干个子问题,直到子问题规模足够小,可以直接回答,再通过合并得到原问题 ...

  8. 正睿OI DAY3 杂题选讲

    正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...

  9. 正睿OI国庆DAY2:图论专题

    正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力 ...

随机推荐

  1. 【转】Git使用教程之基础篇

    Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...

  2. JavaWeb 使用Session实现一次性验证码

    表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...

  3. django logger转载

    https://www.cnblogs.com/jiangchunsheng/p/8986452.html https://www.cnblogs.com/jeavy/p/10926197.html ...

  4. A站(ACFun)爬虫爬取并播放、下载视频(JAVA)

    本文使用的工具有vlc+ffmpeg+phantomjs 一般视频网站的视频地址暴露的方式有两种: 1.html直接暴露 2.通过ajax异步返回. A站使用的方式是第二种.针对第一种方式,直接使用j ...

  5. wpf学习资料链接(做记录)

    1.wpf快速入门系列:https://www.cnblogs.com/zhili/tag/WPF/

  6. SpringBoot中使用Jackson将null值转化为""或者不返回的配置

    第一种方式:SpringBoot中使用Jackson将null值转化为"" 前言:在实际项目中难免会遇到null值的出现,但是我们转json时并不希望出现NULL值,而是将NULL ...

  7. ArcGIS 10 线转点 polyline to points

    核心提示,使用Construct Points工具,在编辑里,选中一条polyline,然后编辑工具栏里的Construct Points.图等有空再补上吧.

  8. linux/ubuntu 取色工具gpick

    命令行方式安装: sudo apt-get install gpick 安装完成以后,在终端窗口中输入: gpick 即可以启动工具

  9. 【oracle】decode函数

    DECODE(参数,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 值1:当参数=值1    翻译值1:想要得到的值 值2:当参数=值2 翻译值2:想要得到的值

  10. Spring和SpringMVC总结篇

    作者:肥宅兜链接:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1.为什么使用Spring ? 方便解耦,简化开发;通过Spring提供的Io ...