博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs2594解药还是毒药(状压dp)
阅读量:4987 次
发布时间:2019-06-12

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

2594 解药还是毒药

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 
 
题目描述 Description

Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原料,所以这些药都有可能在治愈某些病症的同时又使人患上某些别的病症(你可能会问那…那是解药还是毒药啊?)……,经过Smart的努力,终于弄清了每种药的具体性能,他会把每种药能治愈的病症和能使人患上的病症列一张清单给你,然后你要根据这张清单找出能治愈所有病症的最少药剂组合……顺便说一声,病症的数目不超过10种,而且他的药是用不完的,就是说每种药剂都可以被重复使用。

输入描述 Input Description

给你们的单子里第一行是病症的总数n(1≤n≤10)。第二行是药剂的种类m(0<m≤100)。

以下有m行,每行有n个数字用空格隔开,文件的第i+2行的n个数字中,如果第j个数为1,就表示第i种药可以治愈病症j(如果患有这种病的话则治愈,没有这种病则无影响),如果为0表示无影响,如果为-1表示反而能使人得上这种病(无病患上,有病无影响)。Smart制的药任何两种性能都不同。

输出描述 Output Description

你只要输出用的最少的药剂数就可以了,其实还有可能用尽了所有的药也不能将所有病治愈,那样的话你们只要输出“The patient will be dead.”就可以了。

样例输入 Sample Input

3

2

1 0 1

-1 1 0

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

1≤n≤10

0<m≤100

 

#include
#include
#include
#define inf 1e8#define N 2500using namespace std;int n,m,g[1007][1007],f[N];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&g[i][j]); for(int i=0;i<=(1<

 

转载于:https://www.cnblogs.com/L-Memory/p/7076817.html

你可能感兴趣的文章
jQuery页面滚动图片等元素动态加载实现
查看>>
深入理解对象的引用
查看>>
starUML破解-version2.8.0已验证
查看>>
selenium实战学习第一课
查看>>
马后炮之12306抢票工具(三) -- 查票(监控)
查看>>
198. House Robber Java Solutions
查看>>
Java_基础篇(杨辉三角)
查看>>
__str__ __repr__ 与 __format__
查看>>
【LoadRunner】loadrunner常见问题汇总
查看>>
css 不换行省略号
查看>>
BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)
查看>>
BZOJ4078 WF2014Metal Processing Plant(二分答案+2-SAT)
查看>>
阿里云宕机故障 - 思考如何保障系统的稳定性
查看>>
selenium(Python)总结
查看>>
腾迅股票数据接口
查看>>
sql开窗函数,排名函数
查看>>
keepalived简介
查看>>
LOJ#105. 文艺平衡树(FHQ Treap)
查看>>
CentOS 7.X 设置系统时间
查看>>
ie6 div+css
查看>>