BZOJ1688: [Usaco2005 Open]Disease Manangement 疾病管理

来源:互联网 发布:一加性能怪兽 知乎 编辑:程序博客网 时间:2024/05/29 19:22

Portal

状压dp。其实就是无脑暴力…

【代码】

#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;int read(){    int x=0,f=1;char ch=getchar();    while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}    while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}    return x*f;}int n,m,K,ans;int a[1010],f[32768];bool Flag[32768];bool Judge(int x){    int sum=0;    for(int i=0;i<m;i++) if(x&(1<<i)) sum++;    return sum<=K;}int main(){    n=read();m=read();K=read();    for(int i=1;i<=n;i++)    {        static int num;        num=read();        while(num--)            a[i]+=(1<<(read()-1));    }       for(int j=0;j<1<<m;j++) if(Judge(j)) Flag[j]=1;    for(int i=1;i<=n;i++)    for(int j=0;j<1<<m;j++) if(Flag[j])        if((a[i]|j)==j) f[j]++;    for(int i=0;i<1<<m;i++) ans=max(ans,f[i]);    printf("%d\n",ans);    return 0;}
0 0