How Many Sets I


Time Limit: 2 Seconds      Memory Limit: 65536 KB


Give a set S, |S| = n, then how many ordered set group (S1, S2, ..., Sk) satisfies S1 ∩ S2 ∩ ... ∩ Sk = ∅. (Si is a subset of S, (1 <= i <= k))

Input

The input contains multiple cases, each case have 2 integers in one line represent n and k(1 <= k <= n <= 231-1), proceed to the end of the file.

Output

Output the total number mod 1000000007.

Sample Input

1 1
2 2

Sample Output

1
9

题意:

给一套S,| S | = n,则有序集合组(S1,S2,...,Sk)满足S1∩S2∩...∩Sk =∅。 (Si是S的子集,(1 <= i <= k))

输入包含多种情况,每种情况在一行中有2个整数表示n和k(1 <= k <= n <= 2^31-1),继续到文件的末尾。

输出总数mod 1000000007

思路:

md这个题直接是恶心的我快吐了、、、、推了一上午的式子(还是看着别人的博客,唉)我们先直接上公式,然后我们再来推一下
由于集合可以重复被选,所以总的数目是2^(kn)
然后选中的集合都包含x这个元素的数目是C(n,1)*2^(n-1)k
选中的集合包含x1,x2的数目是C(n,2)*2^(n-2)k            ……
所以满足的集合的个数res=2^kn-C(n,1)*2^(n-1)k+C(n,2)*2(n-2)k-……推出的公式为(2^k-1)^n先看这个题,让我们求没有交集的集合的个数。我们是不是可以先求出来组成的集合总个数,然后再减去有交集的元素的个数??当然,这样我们就可以轻松的想到容斥原理了。
我们用总的-有一个元素相同的+有两个元素相同的-有三个元素相同的+有四个元素相同的、、、、、、(有人又会问了,直接全减去不就行吗?为什么还要这么麻烦?!是,这样虽然简单,好像有重复的集合吧、、、、)然后我们接下来的任务就是推这个全部集合的个数,以及有一个交集,有两个交集、、、、的集合个数。先看全部的吧,总个数为2^(n*k),怎么来的??我们现在有n个元素我们要把他们组成集合,现在我们对于每一个元素是不是就有两种情况,选与不选。那样的话我们是不是就会组出2^n个集合,其实我们可以手推一下一个比较小的样例: 1 2 3   这样我们对于这三个数选为1,不选为0。 这样我们就有这几种可能(有序的)0 0 0  0 0 1  0 1 0  0 1 1  1 0 0  1 0 1  1 1 0  1 1 1看一下是不是就正好等于2^3??然后我们要选k个集合,对于每一个集合我们都有2^n种选择(因为我们总共就有2^n个集合嘛),我们要选k个集合这样的话对于每选一个我都有2^n个选择,那么以前的集合选那个数,这个集合选这个数的几率不就是这两种选择的个数相乘吗,也就是说我们是不是就是k个2^n相乘那不就是2^(n*k).(这里的元素可重复且为有序)好,总的解决了,剩下的就是重复的了。我们先来解决只有一个元素重复的情况。我们知道有一个元素重复,但又不知道是哪个,这是我们选中一个元素的几率恰好等于从n个元素中选出一个元素的选法,也就是等于c(n,1)这样我们已经确定下这个集合中的一个元素了在乘上其他集合的选择方案数就好了。这时由于我们已经有一个元素被选出来了,那么我们剩下的元素个数就为n-1这是我们在组成的集合数就变成了(2^(n-1))个,最后我们进行处理,跟上面一样,我们要选k个集合,每一种的集合被选择的可能都是(2^(n-1))k个相乘也就变成了(2^(n-1))^k*c(n,1)其他的什么有两个元素相同,三个元素相同、、、、跟上面的相同,我在这里就不写了这样我们把该处理的都处理了,剩下的我们在使用容斥原理,最后化简。
2^kn-C(n,1)*2^(n-1)k+C(n,2)*2(n-2)k-……——>ans=(2^k-1)^n;(根据二项式公式,得出最后结果为(2^k-1)^n;)不会二项式定理的转;http://baike.sogou.com/v545254.htm?fromTitle=%E4%BA%8C%E9%A1%B9%E5%BC%8F%E5%AE%9A%E7%90%86
注意这解决上面的问题是我们要采用快速幂取模版。(其实你可以选择不用,试试会不会T成狗啊、、、、)
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define mod 1000000007
using namespace std;
ll n,k,ans;
ll qpow(ll n,ll k)
{ll ans=1;while(k){if(k&1) ans=(ans*n)%mod;n=(n*n)%mod;k=k>>1;}return ans;
}
int main()
{while(scanf("%lld%lld",&n,&k)!=EOF){ans=qpow(2LL,k);ans=qpow(ans-1,n);printf("%lld\n",ans%mod);}return 0;
}

转载于:https://www.cnblogs.com/z360/p/7356660.html

zoj——3556 How Many Sets I相关推荐

  1. 组合数——Lucas 基础学习整理【陆续更新】

    声明:博主是个菜比,如果哪里写错了,请留言说明,谢谢,部分参考acdreamers大牛 定义 : Lucas定理是用来求Cmn%p,p为素数的值.Lucas定理是用来求Cnm%p,p为素数的值. Lu ...

  2. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  3. lists,tuples and sets of Python

    (python2.7.x) Lists 列表 列表是一个有序序列(集合),可变的(可以修改),可以理解为其他语言中的数组类型,但是列表更灵活更强大. 列表由方括号[]来定义的,它的元素可以是任意类型或 ...

  4. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  5. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

  6. H.264 picture parameter sets成员值含义学习笔记

    -picture parameter sets 1. pic_parameter_set_id pic_parameter_set_id指明了在切片头中对应的某个psp.pic_parameter_s ...

  7. 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)

    http://poj.org/problem?id=1411  POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...

  8. 粗糙集(Rough sets)、模糊逻辑(Fuzzy Logic)

    第一章  粗糙集理论简介 第一节  粗糙集理论的产生与应用背景 在20世纪70年代,波兰学者Z.Pawlak和一些波兰科学院.波兰华沙大学的逻辑学家们,一起从事关于信息系统逻辑特性的研究,粗糙集理论就 ...

  9. 模拟 ZOJ 3878 Convert QWERTY to Dvorak

    题目传送门 1 /* 2 模拟:手敲map一一映射,累! 3 除了忘记读入字符串不能用gets用getline外还是很顺利的AC了:) 4 */ 5 #include <cstdio> 6 ...

最新文章

  1. Xshell高级后门完整分析报告
  2. 单机版 hadoop 云平台(伪分布式)搭建 统计单词
  3. Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
  4. webSocket使用心跳包实现断线重连
  5. VIM-配置-.vimrc
  6. xfce4桌面的标题栏都变成了透明的
  7. gc java root_聊聊Java的GC机制
  8. Win7系统账户被禁用的解决方法
  9. 使用jemalloc优化java_Jemalloc优化MySQL和Nginx
  10. 关于《应用STATA做统计分析(原书第8版)》一书中`chart()‘语句问题
  11. Windows中查看端口占用情况
  12. WAMP安装curl扩展并发起https请求
  13. English语法_形容词-排序
  14. stellarium-0.19.3.1-win64.exe下载
  15. golang_逃逸分析
  16. 计算机读研的收获和遗憾
  17. [微云助手/微小云怎么用]如何设置群组群发
  18. NLP教程笔记:BERT 双向语言模型
  19. Android 自定义写字板控件实现用图片做橡皮擦实现擦除功能
  20. OC Protocol(待续)

热门文章

  1. Eclipse的java代码出错:The import org.apache cannot be resolved
  2. linux中根目录下各个目录的作用
  3. js获取浏览器的参数
  4. mysql之索引组织表
  5. Android DataBinding之初体验
  6. nginx rewrite和根据url参数location
  7. vsftpd 的工作模式
  8. webablizer 分析Apache 的access 日志
  9. Subsonic设置--新手上路
  10. 聊聊dubbo的Filter