8 条题解

  • 0
    @ 2024-4-15 20:49:23
    using namespace std;
    int xz[10000],cnt=0;
    int t,n,z,x;
    int check(int x){
    	for(int i=1;i<=n;i++){
    		if((xz[i]&x)==xz[i]){
    			return 0;
    		}
    	}
    	return 1;
    }
    void quicksort(int a[],int left,int right){
    	if(left>=right){
    		return ;
    	}
    	int t=a[left];
    	int i=left,j=right;
    	while(i<j){
    		while(i<j&&a[j]>=t) j--;
    		while(i<j&&a[i]<=t) i++;
    		if(i<j){
    			swap(a[i],a[j]);
    		}
    	}
    	swap(a[i],a[left]);
    	quicksort(a,left,i-1);
    	quicksort(a,i+1,right);
    }
    int main(){
    
    	cin>>t>>n;
    	for(int i=1;i<=n;i++){
    		cin>>z;
    		for(int j=1;j<=z;j++){
    			cin>>x;
    			xz[i]=xz[i] | 1<<(x-1);
    		}
    	}
    	for(int i=0;i<(1<<t);i++){
    		if(check(i)){
    			cnt++;
    		}
    	}
    	cout<<cnt;
    
    
    	return 0;
    }
    
    
    

    信息

    ID
    2549
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    199
    已通过
    68
    上传者