zoukankan      html  css  js  c++  java
  • 容斥原理及其证明

    容斥原理是计数方法中一个重要的原理,在算法竞赛中也经常考到(大概是因为需要大量计算吧。。。。)

    容斥原理有个经典题目:一个班每个人都有自己喜欢的科目,有20人喜欢数学,10人喜欢语文,11人喜欢英语,其中3人同时喜欢数学语文,3人同时喜欢语文英语,4人同时喜欢数学英语,2人都喜欢,问全班有多少人?

    这个肯定不可以20+10+11的简单计算,因为有人喜欢多个科目,会重复计算,在之前基础上-3-3-4,这时候会发现全部都喜欢的被多减了,再+2。得到班级人数=20+10+11-3-3-4+2

    设喜欢数学的为A,喜欢语文的为B,英语为C,那么可以得到


    会发现奇数个集合前面是+,偶数个是-。

    推广到一般情况也符合这个规律,可以把公式表示为:(为表示方便,B为全部Ai的并集,公式图片来自网络)


    证明如下:

    设i为m个集合中的元素

    在考虑集合个数为1的时候,i被加了C(1,m)次

    在考虑集合个数为2的时候,i被减了C(2,m)次

    在考虑集合个数为3的时候,i被加了C(3,m)次

    ...

    i总共被加了C(1,m)-C(2,m)+C(3,m)-C(4,m)+...C(m,m)次

    由二项式定理得:

    C(1,m)-C(2,m)+C(3,m)-C(4,m)+...C(m,m)=C(0,m)-(1-1)^m=1

    所以i被加了1次,所以算法正确

  • 相关阅读:
    div定位左右居中
    highcharts绘制3D倾斜的饼图
    Echarts 图表不能渲染问题整理
    RK:系统手势监听
    RK:网络共存、Shell脚本
    泛型
    ArrayList类
    Linux(centos7)安装ClickHouse
    centos安装宝塔命令
    centos下修改hosts文件以及生效命令
  • 原文地址:https://www.cnblogs.com/Chenyao2333/p/3691883.html
Copyright © 2011-2022 走看看