• JZ初中OJ 1339. [南海2009初中]disease


    题目描述

      近期,农场出现了D (1<= D <=15)种细菌。John 要从他的 N (1<= N <=1,000)头奶牛中尽可能多地选些产奶。但是如果选中的奶牛携带了超过 K (1<= K <=D)种不同细菌,所生产的奶就不合格。请你帮助John 计算出最多可以选择多少头奶牛。
     

    输入

    第一行:三个整数 N, D, K

    下面N行:第行表示一头牛所携带的细菌情况。第一个整数 di 表示这头牛所携带的细菌种类数,后面di个整数表示这些细菌的各自种类标号。

    输出

    只一个数 M,最大可选奶牛数。
     

    样例输入

     

    样例输出

     
     

    数据范围限制

     
     

    提示

    样例















    输入  

    6 3 2         

    0

    1 1

    1 2

    1 3

    2 2 1

    2 2 1

    选择:

    1,2,3,5,6

    只有1#和2#两种细菌

    输出

    5

        
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,ans,d,k,inf=-0x3f3f3f,flag[16],use[16]; 
     4 bool a[1001][16];
     5 void dfs(int x)
     6 {
     7     for(int i=use[x-1]+1;i<=d;i++)
     8     {
     9         if(flag[i]==0)
    10         {
    11             flag[i]=1;
    12             use[x]=i;
    13             if(x==k)
    14             {
    15                 for(int j=1;j<=n;j++)
    16                 {
    17                        for(int i=1;i<=d;i++)
    18                     {
    19                         if(a[j][i]==true&&flag[i]==0)
    20                           {
    21                         ans--;
    22                         break;
    23                         }
    24                     }
    25                 }
    26                 if(ans>inf)
    27                 inf=ans;
    28                 ans=n;
    29             }
    30             else
    31             dfs(x+1);    
    32             flag[i]=0;
    33             use[x]=0;
    34         }
    35     }
    36 }
    37 int main()
    38 {
    39     cin>>n>>d>>k;
    40     ans=n;
    41     for(int i=1;i<=n;i++)
    42     {
    43         scanf("%d",&a[0][0]);
    44         for(int j=1;j<=a[0][0];j++)
    45         {
    46             scanf("%d",&a[0][1]);
    47             a[i][a[0][1]]=true;
    48         }
    49     }
    50     dfs(1);
    51     cout<<inf;
    52     return 0;
    53 }
  • 相关阅读:
    ACM-ICPC 2018 南京赛区网络预赛J. Sum
    ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze(分层dijkstra)
    51nod1246 罐子和硬币
    UVALive
    CodeForces
    CodeForces
    hdu3861(tarjan缩点+最小路径覆盖)
    hdu1072(dfs和bfs)
    51nod1352 集合计数(扩展欧几里得)
    Cmder如何调整命令行字体大小
  • 原文地址:https://www.cnblogs.com/dsanying/p/11306734.html
Copyright © 2020-2023  润新知