zoukankan      html  css  js  c++  java
  • UVA11825 Hackers' Crackdown

    题目描述

    PDF

    输入输出格式

    输入格式:

    输出格式:

    输入输出样例

    输入样例#1: 
    3
    2 1 2
    2 0 2
    2 0 1
    4
    1 1
    1 0
    1 3
    1 2
    0
    输出样例#1: 
    Case 1: 3
    Case 2: 2


    子集dp经典题,,

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int maxn=100005;
    int ci[30],n,f[maxn],C;
    int s[maxn],m,now,all;
    
    inline void init(){
    	memset(f,0,sizeof(f));
    	memset(s,0,sizeof(s));
    }
    
    int main(){
    	ci[0]=1;
    	for(int i=1;i<=20;i++) ci[i]=ci[i-1]<<1;
    	while(scanf("%d",&n)==1&&n){
    		init(),all=ci[n]-1,C++;
    		
    		for(int i=0;i<n;i++){
    			s[ci[i]]=ci[i],scanf("%d",&m);
    			while(m--) scanf("%d",&now),s[ci[i]]|=ci[now];
    		}
    		
    		for(int i=0;i<=all;i++) if(!s[i]) s[i]=s[i&-i]|s[i^(i&-i)];
    		
    		for(int i=0;i<=all;i++)
    		    for(int j=i;j;j=(j-1)&i) if(s[j]==all) f[i]=max(f[i],f[i^j]+1);
    		    
    		printf("Case %d: %d
    ",C,f[all]);
    	}
    	
    	return 0;
    }
    

      

     
  • 相关阅读:
    交流课件
    ARC127F ±AB
    CF1566F xor-quiz
    JOISC 2016 Day 1 棋盘游戏
    dev分支和release是什么
    drf 笔记
    drf 序列化的写法 总结
    Linux系统编程
    C/C++ 网络编程
    C++提高编程
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8798781.html
Copyright © 2011-2022 走看看