uva 11825 - Hackers' Crackdown dp
2014-10-28 22:38
627 查看
/******************* * Author:fisty * Data:2014-10-27 * uva11825 * 状压DP ******************/ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define MAX_N 1<<16 int p[MAX_N]; int main(){ int t; int cnt = 1; while(scanf("%d", &t) != EOF){ if(t == 0) break; for(int i = 0;i < t; i++){ int n, x; scanf("%d", &n); p[i] = 1 << i;//此计算机与他相邻计算机的并集 while(n--){ scanf("%d", &x); p[i] |= (1<<x); } } int cover[1<<t+1];//若干Pi的集合s中所有Pi的并集 for(int s = 0;s < (1<<t); s++){ cover[s] = 0; for(int i = 0;i < t; i++){ if(s & (1 << i)){ cover[s] |= p[i]; } } } int f[MAX_N]; f[0] = 0; int ALL = (1 << t)-1; for(int s = 1;s < (1 << t); s++){ f[s] = 0; for(int s0 = s; s0 != 0; s0 = (s0-1)&s){//(s0-1)&s每次可以减去最低位的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 ,Hacker's Crackdown 状态压缩 dp
- uva 11825 Hackers' Crackdown(状态压缩DP)
- UVA 11825 Hackers' Crackdown - 状压dp
- Uva 11825 Hackers' Crackdown ACM解题报告(状压dp)
- UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集
- UVA 11825 Hackers' Crackdown 状态压缩dp
- UVA 11825(Hacker's Crackdown-集合)
- [动态规划] 黑客的攻击 Hacker's CrackDown Uva 11825
- 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 状态压缩
- UVA 11825 Hacker's Crackdown(状压dp)
- UVA - 11825 —— Hackers' Crackdown
- Uva 11825 - Hackers' Crackdown 状态压缩
- Uva11825 - Hackers' Crackdown