首页 > 其他分享 >状压dp——Disease Manangement 疾病管理

状压dp——Disease Manangement 疾病管理

时间:2024-04-09 10:36:43浏览次数:28  
标签:integers diseases int 状压 Disease Line dp

题目描述
Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the farm. Farmer John would like to milk as many of his N (1 <= N <= 1,000) cows as possible. If the milked cows carry more than K (1 <= K <= D) different diseases among them, then the milk will be too contaminated and will have to be discarded in its entirety. Please help determine the largest number of cows FJ can milk without having to discard the milk.
输入格式
Line 1: Three space-separated integers: N, D, and K

Lines 2..N+1: Line i+1 describes the diseases of cow i with a list of 1 or more space-separated integers. The first integer, d_i, is the count of cow i"s diseases; the next d_i integers enumerate the actual diseases. Of course, the list is empty if d_i is 0.

有N头牛,它们可能患有D种病,现在从这些牛中选出若干头来,但选出来的牛患病的集合中不过超过K种病.
输出格式
Line 1: M, the maximum number of cows which can be milked.

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int maxn=1e3+10;
int n,d,k;
int dp[1<<16],v[1<<16],s[1<<16];
int tot,ans;

int main()
{
	int x,y;
	scanf("%d%d%d",&n,&d,&k);
	for(int i=1;i<(1<<d);i++)//处理出患病<=k的所有情况 
	{
		s[i]=s[i-(i&-i)]+1;
		if(s[i]<=k) v[++tot]=i;
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&x);
		int z=0;
		for(int j=1;j<=x;j++)
		{
			scanf("%d",&y);
			z+=(1<<(y-1));
		}
		if(x>k) continue;//如果患病>k直接跳过 
		for(int j=1;j<=tot;j++)//循环所有情况如果牛符合某种情况就加1 
		{
			if((v[j]&z)==z)
			{
				++dp[j];
				ans=max(ans,dp[j]);//最后遍历一下所有情况,取牛的个数最多的一种输出 
			}
		}
	}
	printf("%d",ans);
	
	return 0;
}
/*
样例输入
6 3 2
0
1 1
1 2
1 3
2 2 1
2 2 1
样例输出
5
*/

标签:integers,diseases,int,状压,Disease,Line,dp
From: https://www.cnblogs.com/cuichenxi/p/18123307

相关文章

  • [SDOI2009] Bill的挑战 (状压DP)
    [SDOI2009]Bill的挑战题目描述Sheng_bill不仅有惊人的心算能力,还可以轻松地完成各种统计。在昨天的比赛中,你凭借优秀的程序与他打成了平局,这导致Sheng_bill极度的不满。于是他再次挑战你。这次你可不能输。这次,比赛规则是这样的:给出\(N\)个长度相同的字符串(由小写英文......
  • 斜率优化 DP
    对于这样一类方程\(dp_i=\min\limits_{j=1}^{i-1}(dp_j-a_ic_j)\),其中\(a,c\)都为正整数且递增:如果直接计算,时间复杂度为\(\mathcal{O}(N^2)\)。使用斜率优化,可以将时间复杂度将为\(\mathcal{O}(N)\)。在学习本节之前,请先学会单调队列,还要知道在平面直角坐标系中,斜率越小......
  • 小红不想做完全背包 (hard)(DP)--牛客周赛 Round 39-D
    #include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineendl'\n'#defineinf1e18constintmod=1e9+7;constintN=2005;//typedef__int128lll;//typedefunsignedlonglongull;intn,p;inta[N],dp[N];voidsolve(){......
  • Linux命令之lldptool命令
    LLDP是一个数据链路层发现协议,LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。lldptool工具采用的是LLDP协议,一般我们使用lldptool是为了得到设备的物理拓扑结构以及管理配置信息,比如说,和eth1网口相连的网......
  • 状态压缩dp——动物园
    题目描述新建的圆形动物园是亚太地区的骄傲。圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物。如下图所示:你是动物园的公关主管。你要做的是,让每个参观动物园的游客都尽可能高兴。今天有一群小朋友来到动物园参观,你希望能让他们在动物园度过一段美好的......
  • JUC:ThreadPoolExecutor线程池的使用方法
    文章目录ThreadPoolExecutor线程池状态构造方法Executors工厂方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor提交任务方法关闭任务方法ThreadPoolExecutor线程池状态线程池用高三位表示状态,第一位为符号位。TERMINATED>TIDYING>STOP>......
  • 如何避免WordPress中文乱码现象
    在使用WordPress网站的过程中,很多用户都会遇到中文乱码的问题。中文乱码会给用户阅读和浏览网站带来困扰,也可能影响网站的用户体验和搜索引擎优化。在本篇文章中,我们将介绍一些解决WordPress中文乱码问题的方法,并提供具体的代码示例。1、设置数据库字符集:首先,要确保数据库字符集......
  • WordPress访问不了?快速解决方法大揭秘!
    《WordPress访问不了?快速解决方法大揭秘!》WordPress作为一个流行的内容管理系统,被广泛应用于网站建设领域。然而,有时候我们可能会遇到WordPress网站无法访问的情况,这个问题如果不及时处理,会影响网站的正常运行,进而影响用户体验。本文将探讨常见的WordPress网站无法访问问题,并提供......
  • WordPress网站乱码怎么办?快速解决方案
    在使用WordPress建立网站的过程中,有时候会遇到网站页面出现乱码的情况,这会影响用户体验和网站的可读性。造成网站乱码的原因可能有很多,比如字符编码设置不正确、插件冲突、主题代码问题等。本文将为您介绍一些快速解决WordPress网站乱码问题的具体方法,并提供相应的代码示例。1.......
  • 解决WordPress页面错位问题的实用技巧
    解决WordPress页面错位问题的实用技巧WordPress作为世界上最流行的内容管理系统之一,提供了强大的功能和灵活的定制性,使得许多网站管理员和开发人员选择使用它来搭建自己的网站。然而,有时候在使用WordPress创建页面时,可能会遇到页面错位的问题,导致页面布局混乱,影响用户体验。那么,......