题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3006

题目大意:给定n个集合,每个集合都是由大于等于1小于等于m的数字组成,m最大为14。由给出的集合可以组成多少个不同的集合。

输入描述:第一行为n,m,接下来n行,每行包含k+1个数字,第一个为k,表示该集合的元素个数,接下来k行表示集合元素。

Sample Input
4 4
1 1
1 2
1 3
1 4
2 4
3 1 2 3
4 1 2 3 4
 
Sample Output
15
2
 
分析:以为m的规模很小,可以用二进制表示集合。借助位运算的或( | )来达到集合合并的目的。
   比如一个集合中有两个元素   1  3   那就用5 (101)表示这个集合
  比如一个集合(1 4 )和一个集合(1 2 3)进行合并 那就是  (9)1001 | 111(7)=1111  就是15 
 
代码如下:
 # include<stdio.h>
# include<string.h>
int n,m,k;
int dp[<<];
int main(){
int i;
while(scanf("%d%d",&n,&m)!=EOF){
memset(dp,,sizeof(dp));
while(n--){
scanf("%d",&k);
int set = ;
int temp;
for(i=;i<=k;i++){ //得到这个集合的二进制表示
scanf("%d",&temp);
set = set|(<<(temp-));
} dp[set] = ;
for(i=; i<(<<m); i++) //将新的集合与以往得到的集合合并
if(dp[i])
dp[i|set] = ;
}
int ans = ;
for(i=; i<(<<m); i++) //判断可以组成集合的个数
if(dp[i])
ans++;
printf("%d\n",ans);
}
return ;
}

HDU 3006 The Number of set(位运算 状态压缩)的更多相关文章

  1. The number of set(位运算+状态dp)一道十分美妙的题目哦!!!!!!

    Given you n sets.All positive integers in sets are not less than 1 and not greater than m.If use the ...

  2. HDU 1429 胜利大逃亡(续)(bfs+状态压缩,很经典)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  3. ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩

    HDU 5418 Victor and World Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%I64d & ...

  4. HDU 6183 Color it cdq分治 + 线段树 + 状态压缩

    Color it Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Pro ...

  5. hdu 4352 XHXJ's LIS (数位dp+状态压缩)

    Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully readin ...

  6. hdu 4114 Disney's FastPass(最短路+状态压缩)

    Disney's FastPass Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. 「hdu 4845 」拯救大兵瑞恩 [CTSC 1999](状态压缩bfs & 分层图思想)

    首先关于分层图思想详见2004的这个论文 https://wenku.baidu.com/view/dc57f205cc175527072208ad.html 这道题可以用状态压缩,我们对于每一把钥匙 ...

  8. HDU 4352 XHXJ's LIS (数位DP+LIS+状态压缩)

    题意:给定一个区间,让你求在这个区间里的满足LIS为 k 的数的数量. 析:数位DP,dp[i][j][k] 由于 k 最多是10,所以考虑是用状态压缩,表示 前 i 位,长度为 j,状态为 k的数量 ...

  9. HDU - 3006 The Number of set(状态压缩位运算)

    http://acm.hdu.edu.cn/showproblem.php?pid=3006 题意 给定n个集合,每个集合都是由大于等于1小于等于m的数字组成,m最大为14.问由给出的集合可以组成多少 ...

随机推荐

  1. 进程与线程(7) 进程间通信之信号量 (java os)

    花3分钟浏览一下: http://blog.csdn.net/liu765023051/article/details/8067601 1.生产者,消费者的列子. 2.互斥和同步到底什么东西? 互斥是 ...

  2. Bzoj 1976: [BeiJing2010组队]能量魔方 Cube 最小割,最大流

    1976: [BeiJing2010组队]能量魔方 Cube Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 879  Solved: 304[Submi ...

  3. Yii 安装二维码扩展Qrcode

    比如要添加 https://github.com/2amigos/yii2-qrcode-helper 生成二维码的 这个扩展第一种方法 :    1.打开根目录的composer.json, 在re ...

  4. linux_tomcat7服务器日志爆满导致java崩溃的问题

    在linux服务器上部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 最近刚刚出现了某台linux服务器上的java应用都假死或挂掉 然后我在输入命 ...

  5. Quartz定时任务学习(九)Quartz监听器

    Quartz 提供了三种类型的监听器:监听 Job 的,监听 Trigger 的,和监听 Scheduler 自已的. 本章解释如何应用每一种类型来更好的管理你的 Quartz 应用,并获悉到什么事件 ...

  6. Http(3)

    响应行 1.常见的状态: 200:表示请求处理完美返回 302:表示请求需要经进一步细化 404:表示客户访问的资源找不到. 500: 表示服务器的资源发送错误.(服务器内部错误) 2.常见的响应头 ...

  7. text code

    https://github.com/Itseez/opencv/blob/master/modules/objdetect/src/erfilter.cpp

  8. ZooKeeper监控

    http://jm-blog.aliapp.com/?p=1450 在公司内部,有不少应用已经强依赖zookeeper,zookeeper的工作状态直接影响它们的正常工作.目前开源世界中暂没有一个比较 ...

  9. HTTP 404 - 未找到文件 怎么样解决

    找不到网页  您要查看的网页可能已被删除.名称已被更改,或者临时不可用.  -------------------------------------------------------------- ...

  10. PrintWriter的print和write方法(转)

    public void print(String s) {if (s == null) {s = "null";}write(s);  }  print只是先对s==null转换为 ...