再谈容斥原理
来两道套路几乎一致的题目
【BZOJ2839】集合计数
Description
一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~)
首先我们发现他要求取出的集合是不同的
所以通常的套路是容斥令一个东西
在保证取出的集合是不同的情况下求出那个时候的答案
因为如果按照集合重复来容斥就比较复杂
我们考虑交集至少为i的方案数
有f(i)=C(n,i)*(2^(2^(n-i))-1)
这个是什么意思呢,首先求出i个的位置
然后剩余的位置构成的子集有2^(n-i)个
然后我们在里面选C(X,1)+C(X,2)+C(X,3)+...+C(X,X)=2^(2^(n-i))-1
然后就开始套路了,也算是彻底认识了容斥
接下来就是如何算容斥系数的事情了
我们考虑这样来算:计算它在之前被算了多少次
以小学的3个元素的维恩图举例
A,B,C =1
那么AB(其他同)算了2次 即C(2,1)
而其实际需要1次,所以-1
而ABC算了 C(3,1)-C(3,2)
而其实际需要1次,所以+1
也就是在计算i的时候大小为j的被计算了C(i,j)次
在这道题里
f(k)=1
f(k+1)=-C(k+1,k)
f(k+2)=-C(k+2,k)+C(k+1,k)*C(k+2,k+1)
而很套路的公式是
C(n,m)×C(m,s)=C(n,s)*C(n-s,n-m)
所以啊。。就可以推出f(i)的abs等于C(i,k)这件事情

【BZOJ3622】已经没有什么好害怕的了
又是一道套路题。。
首先排序显然,但随便yy一下好像没啥做法
然后还是一件很有技巧的事情
f[i][j]表示考虑到i,已经确定的数中有j个药片>糖果
然后最重要的性质出来了:
对于i‘>i 那么i’满足的范围包含i的范围
所以就可以搞dp了
f[i][j]=f[i-1][j]+f[i-1][j-1]*(k-j+1) (k表示最大满足范围)
为什么转移是这样的呢?
因为我的f[i-1][j]转移过来是不考虑它填在哪
然后dp完开始套路
注意到我们的f现在的实际意义是至少有j个
所以我们就可以愉快的和上一题一样容斥了
最终答案就等于
sigma(f[n][j]*(-1)^(..)C(j,k)------->这一项是容斥系数);

【BZOJ2839】集合计数&&【BZOJ3622】已经没有什么好害怕的了的更多相关文章

  1. bzoj2839 集合计数

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser  Logout 捐赠本站 2839: 集合计数 Time ...

  2. bzoj2839: 集合计数 容斥+组合

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 523  Solved: 287[Submit][Status][Discuss] ...

  3. bzoj2839 集合计数(容斥)

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 883  Solved: 490[Submit][Status][Discuss] ...

  4. bzoj2839 集合计数 组合计数 容斥原理|题解

    集合计数 题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是 ...

  5. bzoj2839 集合计数(容斥+组合)

    集合计数 内存限制:128 MiB 时间限制:1000 ms 标准输入输出     题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 ...

  6. BZOJ2839:集合计数(容斥,组合数学)

    Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007. ...

  7. BZOJ2839 集合计数 容斥

    题目描述(权限题qwq) 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模100000000 ...

  8. BZOJ2839集合计数

    题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~ ...

  9. BZOJ2839 : 集合计数 (广义容斥定理)

    题目 一个有 \(N\) 个 元素的集合有 \(2^N\) 个不同子集(包含空集), 现在要在这 \(2^N\) 个集合中取出若干集合(至少一个), 使得它们的交集的元素个数为 \(K\) ,求取法的 ...

  10. 2019.02.09 bzoj2839: 集合计数(容斥原理)

    传送门 题意简述:对于一个有N个元素的集合在其2^N个子集中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数. 思路:考虑枚举相交的是哪kkk个,有CnkC_n^kCnk​种方案 ...

随机推荐

  1. 转--Python语言特性

    1 Python的函数参数传递 看两个例子: a = 1 def fun(a): a = 2 fun(a) print a # 1 a = [] def fun(a): a.append(1) fun ...

  2. datagrid点删除,弹出一个确认和取消的消息框

    有个简单的方法:在datagrid的删除按扭datagrid的属性生成器->列->添加按扭列->删除在数据字段中加上:<div id="de" onclic ...

  3. linux 更改文件夹所有者

    更改“tp5”文件的所有者为”www” chown -R tp5/ www 修改目录及其子目录的用户组为“www” chgrp -R www tp5 同时更改文件或目录的所有者和用户组 chown - ...

  4. C# print2flash3文件转化

    1.下载print2flash3 并且安装print2flash3 2.转换工具类 (1)需要导入using Print2Flash3; 这个程序集 using System; using Syste ...

  5. 编写灵活、稳定、高质量的 css代码的规范

    语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 为选择器分组时,将单独的选择器单独放在一行. 为了代码的易读性,在每个声明块的左花括号前添加一个空格. 声 ...

  6. android view绘制流程 面试

    一.view树的绘制流程 measure--->layout--->draw measure 1.ViewGroup.LayoutParams 指定部件的长宽 2.MeasureSpec ...

  7. CodeForces Contest #1137: Round #545 (Div. 1)

    比赛传送门:CF #1137. 比赛记录:点我. 每次都自闭的 div1 啊,什么时候才能上 IM 呢. [A]Skyscrapers 题意简述: 有一个 \(n\times m\) 的矩阵 \(a_ ...

  8. 调用链系列一、Zipkin架构介绍、Springboot集承(springmvc,HttpClient)调用链跟踪、Zipkin UI详解

    1.Zipkin是什么 Zipkin分布式跟踪系统:它可以帮助收集时间数据,解决在microservice架构下的延迟问题:它管理这些数据的收集和查找:Zipkin的设计是基于谷歌的Google Da ...

  9. [转]VS2015 Git 源码管理工具简单入门

    VS2015 Git 源码管理工具简单入门   1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本 ...

  10. Windows CreateFont:创建自己的字体

    原文地址:http://blog.csdn.net/softn/article/details/51718347 前面无论是使用文本输出函数还是 static 控件,字体都是默认的,比较丑陋,我们完全 ...