1 条题解

  • 0
    @ 2023-9-10 15:15:13
    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 1001
    #define inf 0x3f3f3f3f
    int n, d, k;
    int a[1001], dp[1<<15], cnt[1<<15];
    int main()
    {
        int i, j, m, s;
        scanf("%d%d%d", &n,&d,&k);
        for(i=0; i < (1<<d); i++) cnt[i] = cnt[i>>1] + (i&1);
        for(i = 1; i <= n; i++)
    	{
            scanf("%d",&m);
            while(m--){
                scanf("%d",&s);
                a[i] |= (1<<(s-1));
            }
        }
        int ans = 0;
        for(i = (1<<d)-1; i >= 1; i--)
    	{
        	if(cnt[i]>k) continue;
            for(j = 1; j <= n; j++)
    		{
                s = a[j]&i;  
                if(s!=a[j]) continue;
                dp[i]++;  
                if(dp[i]>ans) ans = dp[i];
            }
        }
        printf("%d\n",ans);
        return 0;
    }
    
    • 1

    [Usaco2005 Open]Disease Manangement 疾病管理

    信息

    ID
    1688
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    13
    已通过
    9
    上传者