记录编号 245911 评测结果 AAAAAAAAAA
题目名称 [USACO Open05] 疾病管理 最终得分 100
用户昵称 GravatarMagic_Sheep 是否通过 通过
代码语言 C++ 运行时间 0.145 s
提交时间 2016-04-04 16:06:35 内存使用 0.70 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[100000],a[1005];
int n,d,k;
int main()
{
  freopen("disease.in","r",stdin);
  freopen("disease.out","w",stdout);
  scanf("%d%d%d",&n,&d,&k);
  memset(a,0,sizeof(a));
  for(int i=1;i<=n;i++)
  {
    int sum,v;
    scanf("%d",&sum);
	for(int j=1;j<=sum;j++)
    {
      scanf("%d",&v);
	  v--;
      a[i]^=(1<<v);
    }
  }
  for(int i=1;i<=n;i++)
  {
  for(int j=((1<<d)-1);j>=0;j--)
      if (f[j|a[i]]<f[j]+1)
        f[j|a[i]]=f[j]+1;
  }
  int res=0;
  for(int i=0;i<=((1<<d)-1);i++)
  {
    int cnt=0;
	for(int j=0;j<=d;j++)
      if (i&(1<<j))
        cnt++;
    if (cnt<=k)
      res=max(res,f[i]);
  }
  printf("%d\n",res);
  return 0;
}