小珂的工作
来源:互联网 发布:人工智能的发展进程 编辑:程序博客网 时间:2024/04/19 08:41
描述
小珂有一个奶牛场,奶牛场最近在流行D(1<D<=15)种病毒,小珂的农场一共有N(1<N<=1000)只奶牛,含超过K(1<=K<=D)种病毒的牛奶不得不丢弃.(牛奶中含有奶牛身上的病毒)。现在希望你写一个程序,来确定一下一个桶里的最多可以包含多少头奶牛的牛奶。
输入
第一行一个整数M(1<M<=7),表示有M组测试数据,接下来的M组数据的第一行有三个整数,N,D,K,分别表示奶牛的数量,病毒的总种类,最多一个桶中可以包含的病毒数量。接下来N行,第i行,第一个数 i1,表示第i头牛包含的病毒种类个数,随后i1个数,表示的是病毒种类的标号(默认对D个病毒尽心标号,从1到D ),如果i1 为0,表示第没有病毒。
输出
每组数据输出可以最多挤多少头牛(不换桶),换行结束。
样例输入
1
6 3 2
0
1 1
1 2
1 3
2 2 1
2 2 1
样例输出
小珂有一个奶牛场,奶牛场最近在流行D(1<D<=15)种病毒,小珂的农场一共有N(1<N<=1000)只奶牛,含超过K(1<=K<=D)种病毒的牛奶不得不丢弃.(牛奶中含有奶牛身上的病毒)。现在希望你写一个程序,来确定一下一个桶里的最多可以包含多少头奶牛的牛奶。
输入
第一行一个整数M(1<M<=7),表示有M组测试数据,接下来的M组数据的第一行有三个整数,N,D,K,分别表示奶牛的数量,病毒的总种类,最多一个桶中可以包含的病毒数量。接下来N行,第i行,第一个数 i1,表示第i头牛包含的病毒种类个数,随后i1个数,表示的是病毒种类的标号(默认对D个病毒尽心标号,从1到D ),如果i1 为0,表示第没有病毒。
输出
每组数据输出可以最多挤多少头牛(不换桶),换行结束。
样例输入
1
6 3 2
0
1 1
1 2
1 3
2 2 1
2 2 1
样例输出
5
#include<stdio.h>#include<string.h>int virus[16],cow[1010],n,d,k,Max;void dfs(int step,int sum,int shell){//step第几种病毒 sum是当前病毒总数 shell已经选定的病毒if(d-step+1<k-sum) return;if(sum==k){ int i,ans=0;for(i=1;i<=n;i++)if(cow[i]==(cow[i]&shell)) ans++;//看此时i牛的病是否被包含在已有病毒里面if(ans>Max) Max=ans;return;}dfs(step+1,sum,shell);dfs(step+1,sum+1,shell|virus[step]);}int main(){ int t,i,j,x,y;scanf("%d",&t);for(i=1;i<16;i++)virus[i]=1<<i;//初始virus数组while(t--){ memset(cow,0,sizeof(cow));scanf("%d %d %d",&n,&d,&k);for(i=1;i<=n;i++){scanf("%d",&x);for(j=1;j<=x;j++){ scanf("%d",&y);cow[i]|=virus[y];//加入此病毒}}Max=0;dfs(1,0,0);printf("%d\n",Max);}return 0;}
0 0
- 小珂的工作
- NYOJ167 小珂的工作
- 刚工作的小感慨!!
- 工作一年的小总结
- 工作小一年的思考
- 关于工作的小故事
- 测量工作的小经历
- 小的软件初始化之前的工作
- 整理工作中遇到的小问题
- 工作中解决的小问题
- 一些工作中用到的小技巧
- 工作中碰到的小问题
- 加密锁的工作原理小介绍
- 近期工作的一些小总结
- 工作中总结的编程小技巧
- 工作中总结的编程小技巧
- 小窥计算机的工作奥秘
- 工作中遇到的小问题
- GitHub提交代码
- 2-05. 求集合数据的均方差(15)
- 使用百度API实现热点(WIFI)、GPS、基站定位
- map嵌套
- Java线程知识__其他几种线程同步的工具类的使用(CyclicBarrier,CountDownLatch,Exchanger)
- 小珂的工作
- 博客程序开发历程【5】-[附phpmailer]{附源码}
- HDU 1233 还是畅通工程 最小生成树
- 营销软件详情咨询
- Palindrome Partitioning II
- 计算两点间的距离(2001)
- 1407220953-hd-Ignatius and the Princess IV.cpp
- C++多态的实现原理
- zxing二维码