博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JZOJ 1284. 病毒
阅读量:5129 次
发布时间:2019-06-13

本文共 1271 字,大约阅读时间需要 4 分钟。

题目

Description

  D(1<=D<=15)种病毒正袭击着牧场里的奶牛,这给牧场主约翰造成了极大的麻烦,因为按照卫生检疫条例的规定:如果牛奶中的病毒超过K(1<=K<=D)种则不允许被销售,约翰的牧场里共有N(1<=N<=1,000)头奶牛,每头奶牛都带有若干种病毒,约翰挤出的牛奶是混放在一起的,要求约翰最多可以挤多少头奶牛的牛奶,使得混放在一起的牛奶不包含超过K种的病毒。
 

Input

  输入文件的第一行有三个用空格隔开的整数N,D,K,接下来的N行每行表示一头奶牛的病毒列表,每行的第一个数d_i(0<=d_i<=D)表示该头奶牛共携带了d_i种病毒,紧接着的d_i个整数表示该头奶牛共携带的每一种病毒的编号,相邻两数之间用空格隔开。

Output

  输出文件仅有一行包含一个整数,表示约翰最多可以挤多少头奶牛的牛奶,使得混放在一起的牛奶不包含超过K种的病毒。
 

Sample Input

6 3 201 11 21 32 2 12 2 1

Sample Output

5
 

Data Constraint

 
 

Hint

【样例说明】
  约翰可以挤编号为1,2,3,5,6的奶牛的牛奶,牛奶中只含两种病毒(#1和#2),病毒种数不大于K(2)。

分析

  • 状压一下快一点

代码

1 #include
2 #include
3 using namespace std; 4 long long v[1010]; 5 long long f[1010]; 6 int t[500000]; 7 void take(int n) 8 { 9 for (int i=0;i<=(1<
>n>>d>>k;23 for (int i=1,x;i<=n;i++)24 {25 cin>>x;26 for (int j=1,a;j<=x;j++)27 {28 cin>>a;29 v[i]=v[i]|(1<<(a-1));30 }31 }32 take(d);33 int sum,ans=-10000;34 for (int i=0;i<=(1<
k) continue;38 for (int j=1;j<=n;j++)39 {40 if ((v[j]&i)==v[j])41 sum++;42 }43 ans=max(ans,sum);44 }45 cout<

 

转载于:https://www.cnblogs.com/zjzjzj/p/10542633.html

你可能感兴趣的文章
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
Node.js 连接 MySQL
查看>>
ACM-ICPC 2018 world final A题 Catch the Plane
查看>>
那些年,那些书
查看>>
面向对象六大基本原则的理解
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
精读《useEffect 完全指南》
查看>>
SNF快速开发平台MVC-EasyQuery-拖拽生成SQL脚本
查看>>
DrawerLayout实现双向侧滑
查看>>
MySQL入门很简单-触发器
查看>>
LVM快照(snapshot)备份
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
数论四大定理
查看>>
npm 常用指令
查看>>