容斥原理

\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i

二项式反演

形式1

\(f_i=\sum_{j=k}^n C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^{i-j}*C(i,j)*f_j\)

形式2

\(f_i=\sum_{j=k}^n (-1)^j*C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^j*C(i,j)*f_j\)

证明1

\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i

\(\Rightarrow |\complement A_1\cap \complement A_2\cap...\cap \complement A_n|=|S|-\sum\limits_{1\le i\le n}|A_i|+\sum\limits_{1\le i

\(\Rightarrow |A_1\cap A_2\cap...\cap A_n|=|S|-\sum\limits_{1\le i\le n}|\complement A_i|+\sum\limits_{1\le i

假设现在交集的大小仅是关于集合个数的函数,

设\(f_n\)表示\(|A_1\cap A_2\cap...\cap A_n|\),\(g_n\)表示\(|\complement A_1\cap

\complement A_2\cap...\cap \complement A_n|\),且\(f(0)=g(0)=|S|\),则

\(f_i=\sum_{j=0}^i (-1)^j*C(i,j)*g_j\)

\(g_i=\sum_{j=0}^i (-1)^j*C(i,j)*f_j\)

形式2得证,证明形式1只需代换即可.

对于\(\sum_{j=k}^i\)的情况,请看证明2.

证明2

对于形式1,把\(f_i\)代入右侧式子得

\(g_i=\sum_{j=k}^i (-1)^{i-j}*C(i,j)*\sum_{l=k}^j C(j,l)*g_l\)

\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*C(i,j)*C(j,l)*g_l\)

\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{i!}{j!(i-j)!}*\frac{j!}{l!(j-l)!}*g_l\)

\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{(i-l)!}{(i-j)!(j-l)!}*\frac{i!}{(i-l)!l!}*g_l\)

\(=\sum_{l=k}^i C(i,l)*g_l*\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)\)

当\(i\neq l\)时,由二项式定理,得\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=(1-1)^{i-l}=0\)

当\(i=l\)时,\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=1\)

\(\therefore g_i=[i=l]*C(i,l)*g_l=g_i\),得证.

习题

A. HDU 4135

求 \([A,B]\) 中有多少个数与 \(N\) 互质。 \(A,B\le 10^{15},N\le 10^9\)

\(O(\sqrt n)\) 找出 \(n\) 的所有质因子,然后指数级容斥。可以证明质因子个数不会超过15个。

B. HDU 4059

\(T\le 1000\) 组询问,给定 \(n\) ,求与 \(n\) 互质的数的四次方和。

\(O(\sqrt n)\) 找出 \(n\) 的所有质因子,然后指数级容斥。可以证明质因子个数不会超过6个。

C. HDU 5201

有 \(n\) 件物品, \(m\) 个人,现在要把物品分给人,要求没有一个人拿到的物品数大于等于第一个人拿到的物品数。求方案数。多组数据。 \(T\le 25,n,m\le 10^5\)

先枚举第一个人拿到的物品数 \(i\)。

然后就要求把 \(n-i\) 个物品分给 \(m-1\) 个人且每个人不能超过 \(i\) 的方案数。

来源:https://www.cnblogs.com/BlogOfchc1234567890/p/10885615.html

c语言容斥原理,容斥原理 | 易学教程相关推荐

  1. 鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc

    c语言高级编程技术教程 图形显示方式与鼠标输入 c语言高级编程技术教程 图形显示方式和鼠标输入 图形显示方式和鼠标输入 问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光 标将 ...

  2. 单片机独立式按键c语言程序,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询)...

    (原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询) /************************************************************ ...

  3. c语言指针数组课件,C语言指针与数组教程课件.ppt

    C语言指针与数组教程;教学要求;本章主要内容;引子;#include void swap ( int x, int y ) { printf("调用时:x地址为:%p, 值为:%d\n&qu ...

  4. mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf

    C语言调用mysql快速教程(精华篇).pdf ,使用 语言操作 之前,先在 里头创建一个数据库,一个表,在表里头添加 1 c mysql mysql 数据如下: 创建数据库,库名为 cusemysq ...

  5. c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...

    C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt * * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序 ...

  6. c语言程序设计基础项目教程,C语言程序设计基础项目教程

    摘要: <C语言程序设计基础项目教程/高职高专计算机教学改革新体系规划教材>通过项目实例,重点讲解C语言结构化程序设计的基本思想,方法和解决实际问题的技巧,培养学习者设计,分析应用程序的能 ...

  7. R语言七天入门教程二:认识变量与运算符

    R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...

  8. c语言程序设计工作任务,C语言程序设计任务驱动教程

    <高等院校计算机任务驱动教改教材:C语言程序设计任务驱动教程>强调动脑.动手,强调"做中学.做中会".每个教学单元的语法知识条理化,程序编写渐进化,通过"知识 ...

  9. 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  10. R语言时间序列ARIMA新手教程

    R语言时间序列ARIMA新手教程 首先说一下ARMA回归的底层逻辑,所谓的AR模型和MA模型都是ARMA模型的一种特殊情况,有点类似正方形和长方形都是矩形.ARMA模型的表达式为: p为自回归部分的滞 ...

最新文章

  1. 清空python的变量
  2. 玩转OpenVswitch 简介
  3. CCCatmullRomBy和CCPointArray
  4. 去哪里学习python_Python从哪里开始学?怎么入门?
  5. 创建自已的sql函数
  6. 【大数据学习-hadoop1】大数据如何处理
  7. (97)Verilog HDL:秒灯设计
  8. Ajax请求返回200 OK,但是会引发错误事件而不是成功
  9. Android消除Toast延迟显示
  10. 图文并茂!CIC滤波器的FPGA实现
  11. HTML 编辑器简介
  12. Win 双网卡上网冲突,网络设置
  13. 搭建ORB_SLAM3在Linux下的编译和运行环境
  14. SEO人员必备技术有哪些
  15. AI轻松入门,AI零基础入门,AI初级教学,
  16. html分列代码,科学网—EXCEL 分列 (TextToColumns) 的C#代码 - 丁祥欢的博文
  17. Windows: Ctrl,Alt, Shift等快捷键的含义
  18. webp 动画 android,Android加载animated webp的控制和Glide加载GIF
  19. 自动驾驶决策规划算法第一章笔记 忠厚老实的老王
  20. 集成方法:渐进梯度回归树GBRT(迭代决策树)

热门文章

  1. 机器学习-学习资源整理
  2. 机器学习第1天:数据预处理
  3. 开源任务调度平台elastic-job-lite源码解析
  4. 饿了么高稳定、高性能、高可用、高容错API架构实践!
  5. 看懂mysql执行计划--官方文档
  6. Diagram of Spring 3.0 module dependencies--转载
  7. 金融风控实战——信贷业务架构与业务分析
  8. 速神经网络的训练算法LARS/LAMB工作原理 --UC Berkeley在读博士生尤洋
  9. 人一样自然流畅地说话,下一代智能对话系统还有多长的路要走?
  10. Oracle优化08-并行执行