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

POJ 2436

时间:2014-09-27 13:10:49      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   for   sp   div   on   c   log   

枚举病的组合,再把牛的状态与之作或运算,若值仍是病组合的状态,则可以加1,否则,跳过。

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

int cow[1100],n,D,K;
int ans;

int hm(int k){
	int h=0;
	while(k){
		if(k&1)
		h++;
		k>>=1;
	}
	return h;
}

int main(){
	int t,status,d;
	while(scanf("%d%d%d",&n,&D,&K)!=EOF){
		ans=0;
		int cc;
		for(int i=1;i<=n;i++){
			scanf("%d",&t);
			status=0;
			for(int s=0;s<t;s++){
				scanf("%d",&d);
				d--;
				status=status|(1<<d);
			}
			cow[i]=status;
		}
		int s=(1<<D)-1;
		for(int i=0;i<=s;i++){
			cc=0;
			if(hm(i)>K) continue;
			for(int k=1;k<=n;k++){
				if((i|cow[k])==i)
				cc++;
			}
			if(cc>ans)
			ans=cc;
		}
		printf("%d\n",ans);
	}
	return 0;
}

  

POJ 2436

标签:blog   io   os   for   sp   div   on   c   log   

原文地址:http://www.cnblogs.com/jie-dcai/p/3996121.html

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