容斥原理

容斥原理指的是一种排重,补漏的计算思想,形式化的来说,我们有如下公式:
\[\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. android studio学习----gradle配置

    转载地址:http://blog.csdn.net/loongggdroid/article/details/47037413 1.gradle的简单介绍 Gradle是可以用于Android开发的新 ...

  2. FFmpeg基础一

    来源:http://blog.csdn.net/chance_yin/article/details/10323441 一.研究数字多媒体,首先要了解几个基本术语(ffmpeg的相关文档几乎都是英文的 ...

  3. MySql定时备份脚本

    最近需要对某服务的数据库数据进行备份,因此参考网上教程完成数据库备份脚本. 因为服务的使用频率较低,因此设置定时任务,在每天的中午以及午夜时分进行备份操作. #!/bin/bash # 设置mysql ...

  4. FTP服务搭建配置笔记

    1.什么是文件共享服务? 简单来说就是文件域存储块设备可以共享给他人使用. 1.1 实现文件共享服务的三种方式 FTP:属于应用层服务,可以跨平台使用 NFS:属于内核模式,不可以跨平台使用 Samb ...

  5. Linux上搭建SVN服务

    环境:centos7 一.搭建svn服务 1. 安装svn yum -y install subversion 2. 创建一个目录作为svn服务的地址(svn://192.168.0.2:3690 访 ...

  6. springboot easypoi 报错The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/e

    事故现场: The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/easypoi/configur ...

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

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

  8. 201871010109-胡欢欢《面向对象程序设计(java)》第二周学习总结

    开头: 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>     https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地 ...

  9. Java多线程编程核心技术-第4章-Lock的使用-读书笔记

    第 4 章 Lock 的使用 本章主要内容 ReentrantLocal 类的使用. ReentrantReadWriteLock 类的使用. 4.1 使用 ReentrantLock 类 在 Jav ...

  10. git常用命令(测试必备)

    什么是git 百度百科:Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. git相对svn,有很多优势,这里就不再赘述,大家网上搜索吧. g ...