码迷,mamicode.com
首页 > 其他好文 > 详细

【UVA】11825 Hackers' Crackdown(状压dp)

时间:2018-06-26 12:22:32      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:ref   tps   name   include   while   https   turn   ret   ace   

题目

传送门:QWQ

 

 

分析

$ n<= 16 $ 显然是状压

然后搞一搞(靠着蓝书yy一下)

 

 

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=17;
int n, P[maxn], cover[1<<maxn], f[1<<maxn]; 
int main(){
    int kase=0;
    while(scanf("%d",&n)==1 && n){
        for(int i=0;i<n;i++){
            int m,x; scanf("%d",&m);
            P[i]=1<<i;
            while(m--){scanf("%d",&x); P[i]|=(1<<x);}
        }
        for(int S=0;S<(1<<n);S++){
            cover[S]=0;
            for(int i=0;i<n;i++)
                if(S&(1<<i)) cover[S]|=P[i];
        }
        f[0]=0;
        int All=(1<<n)-1;
        for(int S=1;S<(1<<n);S++){
            f[S]=0;
            for(int S0=0;S0;S0=(S0-1)&S){
                if(cover[S0]==All) f[S]=max(f[S],f[S^S0]+1);
            }
        }
        printf("Case %d: %d\n",++kase,f[All]);
    }
    return 0;
}

 

 

 

 

 

 

【UVA】11825 Hackers' Crackdown(状压dp)

标签:ref   tps   name   include   while   https   turn   ret   ace   

原文地址:https://www.cnblogs.com/noblex/p/9228288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!