Uva - 11825 - Hackers' Crackdown(状态压缩dp)
来源:互联网 发布:2017人工智能大会 编辑:程序博客网 时间:2024/06/01 09:43
题意:全集为0, 1, 2, ..., N-1,输入N个子集,求这N个子集最多能分成多少组,使得每组的并集都是全集。
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=226&page=show_problem&problem=2925
——>>设f[S]为集合S的最大拆分组数。
则对于S的所有子集S0,得状态转移方程:
(若S0的元素并集为全集)
f[S] = max(f[S], f[S^S0]+1);
#include <cstdio>#include <algorithm>using namespace std;const int maxn = 20;int cover[1<<maxn], f[1<<maxn];int main(){ int N, m, i, temp, p[maxn], S, S0, cnt = 1; while(scanf("%d", &N) == 1 && N) { for(i = 0; i < N; i++) //输入N个集合 { p[i] = 1<<i; scanf("%d", &m); while(m--) { scanf("%d", &temp); p[i] |= (1<<temp); } } for(S = 0; S < (1<<N); S++) //求子集所包含的域 { cover[S] = 0; for(i = 0; i < N; i++) if(S & (1<<i)) cover[S] |= p[i]; } f[0] = 0; int ALL = (1<<N) - 1; for(S = 1; S < (1<<N); S++) //dp求解 { f[S] = 0; for(S0 = S; S0; S0 = S&(S0-1)) if(cover[S0] == ALL) f[S] = max(f[S], f[S^S0]+1); } printf("Case %d: %d\n", cnt++, f[ALL]); } return 0;}
- Uva 11825 - Hackers’ Crackdown 状态压缩DP
- UVA 11825 Hackers' Crackdown 状态压缩dp
- UVa 11825 Hackers’ Crackdown / 状态压缩DP
- UVA 11825 - Hackers' Crackdown(dp+状态压缩)
- UVA 11825 Hackers' Crackdown DP+状态压缩 -
- UVa 11825 Hackers' Crackdown (状态压缩DP)
- Uva - 11825 - Hackers' Crackdown(状态压缩dp)
- UVA 11825 - Hackers' Crackdown(状态压缩DP)
- uva 11825 Hackers' Crackdown(动态规划-状态压缩DP)
- UVA 11825 Hackers' Crackdown(状态压缩DP)
- UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集
- Uva 11825 - Hackers' Crackdown 状态压缩
- UVA - 11825 Hackers' Crackdown 状态压缩
- UVa 11825 Hackers' Crackdown(二进制压缩+DP)
- UVA 11825Hackers' Crackdown dp+位运算状态压缩(子集枚举)
- UVA 11825 Hackers' Crackdown(状压dp)
- UVA 11825 Hackers' Crackdown (dp)
- uva 11825 - Hackers' Crackdown dp
- Win7 下配置Cocos2d
- hdu 1856 More is better
- 汇编语言王爽(第二版)课后习题答案
- 输出9*9乘法口诀表
- 标识符命名规则
- Uva - 11825 - Hackers' Crackdown(状态压缩dp)
- SQL查询超时的设置方法
- 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
- hdu 4544 湫湫系列故事——消灭兔子(优先队列+贪心)
- OpenMP: 程序for循环并行效率优化
- [算法] poj 1274 The Perfect Stall (匈牙利)
- 你的搜索其实很糟糕?
- Hadoop1.0.4集群安装
- Android基于box2d开发弹弓类游戏[0]