bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理 dfs
2016-11-23 20:06
441 查看
题意
给出n头牛和d种疾病,每一头牛都会有若干种疾病,问最多能选择多少头牛使得这些牛的疾病数不超过k。n<=1000,k<=d<=15
分析
状压一下直接搜索选取哪些疾病然后O(n)扫一遍即可。代码
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define N 2005 using namespace std; int a ,n,d,k,now,ans; void dfs(int x,int y) { if (x>d||y==k) { int s=0; for (int i=1;i<=n;i++) if ((a[i]|now)==now) s++; ans=max(ans,s); return; } dfs(x+1,y); now+=1<<(x-1); dfs(x+1,y+1); now-=1<<(x-1); } int main() { scanf("%d%d%d",&n,&d,&k); for (int i=1;i<=n;i++) { int x; scanf("%d",&x); for (int j=1;j<=x;j++) { int y; scanf("%d",&y); a[i]|=1<<(y-1); } } dfs(1,0); printf("%d",ans); return 0; }
相关文章推荐
- 【BZOJ】1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压dp)
- bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压)
- [BZOJ] 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- bzoj 1688 [Usaco2005 Open]Disease Manangement 疾病管理
- [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理(状压dp)
- bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理 状压
- 【bzoj1688】[Usaco2005 Open]Disease Manangement 疾病管理
- 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP
- bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压DP)
- BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- 【状压dp】【bitset】bzoj1688 [Usaco2005 Open]Disease Manangement 疾病管理
- [Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688
- BZOJ1688: [Usaco2005 Open]Disease Manangement 疾病管理
- BZOJ1688 [Usaco2005 Open]DiseaseManangement 疾病管理
- 【bzoj1688】[USACO2005 Open]Disease Manangement 疾病管理 状态压缩dp+背包dp
- [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理(状压dp)
- [BZOJ1688] [Usaco2005 Open]Disease Manangement 疾病管理
- 1688: [Usaco2005 Open]Disease Manangement 疾病管理
- 1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
- 1688: [Usaco2005 Open]Disease Manangement 疾病管理