Tyvj3308毒药解药题解
题目大意
这些药都有可能在治愈某些病症的同一时候又使人患上某些别的病症……经过我天才的努力。最终弄清了每种药的详细性能,我会把每种药能治的病症和能使人患上的病症列一张清单给你们,然后你们要依据这张清单找出能治愈全部病症的最少药剂组合……顺便说一声,病症的数目不超过10种。我的药是用不完的,就是说每种药剂都能够被反复使用。题解
二进制表示患病状态(2n≤1024种)和每种药的治病与致病状态,然后从2n−1到0開始连有向边,然后bfs出最短路就可以。感觉这样对付一道搜索题大材小用了。Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int maxn = 200000, nil = 0, maxm = 21, oo = 1000000000;
int n, m, map[maxm][105];
int cur[105], inf[105];//cure infect
int u[maxn], v[maxn], nxt[maxn], pnt[1 << maxm], e;
bool vis[1 << maxm];
int d[1 << maxm];
void add(int a, int b)
{u[++e] = a; v[e] = b;nxt[e] = pnt[a]; pnt[a] = e;
}
void init()
{int x;scanf("%d%d", &n, &m);for(int i = 1; i <= m; ++i){for(int j = 1; j <= n; ++j){scanf("%d", &x);if(x == 1){cur[i] |= (1 << (j - 1));}if(x == -1){inf[i] |= (1 << (j - 1));}}}for(int i = (1 << n) - 1; i > 0; --i){for(int j = 1; j <= m; ++j){add(i, (i & (~cur[j])) | inf[j]);}}
}
void work()
{queue <int> Q;memset(d, 0x3f, sizeof(d));Q.push((1 << n) - 1);d[(1 << n) - 1] = 0;vis[(1 << n) - 1] = true;while(!Q.empty()){int t = Q.front();Q.pop();for(int j = pnt[t]; j != nil; j = nxt[j]){if(!vis[v[j]]){d[v[j]] = d[t] + 1;vis[v[j]] = true;Q.push(v[j]);}}}if(d[0] > oo) puts("The patient will be dead.");else printf("%d\n", d[0]);
}
int main()
{init();work();return 0;
}
转载于:https://www.cnblogs.com/gccbuaa/p/7222229.html
Tyvj3308毒药解药题解相关推荐
- 哈希表的应用--vijos 毒药?解药?
http://www.vijos.cn/Problem_Show.asp?id=1026 描述 Description 羽毛笔和im是抽签到同一个考场的,她们突然闻到一阵刺鼻的化学试剂的气味.机灵鼠: ...
- 1000瓶药中找出一瓶毒药,10只老鼠做试验
题目如下:现有1000瓶药,其中有一瓶毒药,喝了之后1小时后才产生效果,现在你有10只老鼠和1个小时的时间,请问怎么找出毒药? 题解:这道题明显就是只能一开始就把所有药都喂给10只老鼠,1小时后就直接 ...
- 你们是魔鬼吗?Adobe研发了一款反PS工具:自己打自己?
真正的勇士敢于直面自己脸上的坑坑洼洼.现在,没有经过P图软件或美颜相机加工润色的照片,你还敢随随便便往社交平台上发吗? 如果你完全没有这些顾虑,那就要夸一下你真的很real,下面要说的这个工具也将对你 ...
- 福利来啦!!Python基础语法干货
最近几天,给大家简单的介绍了一下基本的python的内容和学习的难度,还有就业方向,估计大家对于python相信也有了一定的基础了解了.同时,老袁这里花了一下午时间整理了一下,python基本的一些运 ...
- 中年危机,35 岁定律,见鬼去吧!
中年危机,35 岁定律,相信你都听说过,每次触及还会让你感到丝丝焦虑,毕竟时间这把杀猪刀不会放过任何一个人.中年危机或 35 岁定律是客观存在的,你迟早都会遭遇的,那你是否有信心战胜它呢? 中年危机之 ...
- 【日常学习】【状压BFS】codevs2594 解药还是毒药题解
题目描述 Description Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原料,所以这些药都有可能在治愈某些病症的同时又使人患上某些别的病症(你可能会问那-那是解 ...
- Vijos P1026毒药?解药?
Vijos P1026毒药?解药? 题目 描述 羽毛笔和im是抽签到同一个考场的,她们突然闻到一阵刺鼻的化学试剂的气味. 机灵鼠:(头都不抬)你们是考生么?还在门口磨蹭什么?快进来帮我忙!!--怎么还 ...
- 7大车企电动策略,平台化到底是解药还是毒药?
来源:车云 电动化,已经成为当下汽车行业绕不开的话题,虽然几个国际主流汽车面对电动时代的态度都不一样(各自的情况不同),但不得不说,它们都在积极筹备着这一产业转型带来的冲击. 电动化平台,就是在传统燃 ...
- Kubernetes是解药还是毒药?
三年前Docker的诞生,给IT行业带来了巨大的革新,云计算模式有了新的尝试方式,应用交付变得异常便捷.也是借助这样的优势,不论在开发者市场.还是在运维人员心中,Docker均占据了一个无法撼动的位置 ...
- codevs 2594 解药还是毒药(状压+bfs)
题目描述 Description Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原料,所以这些药都有可能在治愈某些病症的同时又使人患上某些别的病症(你可能会问那-那是解 ...
最新文章
- Android动画之帧动画和补间动画
- Vue开发入门看这篇文章就够了
- 挑战AI种番茄,第二届国际智慧温室种植挑战赛启动!
- 当前操作系统缺少黑体等字体_从零开始开发一个操作系统
- python降维之时间类型数据的处理_使用Python进行数据降维|线性降维
- 又反转了!IEEE发布最新声明:解除对华为系成员的限制
- 使用python对url编码解码
- 【Flink】Flink 如何 保证 同一个key对应的state是一个呢?KeyedProcessFunction
- 策划入门(一)什么样的创意是可行的
- iptables命令详解
- 老兵不死:Radionomy正式宣布收购Winamp
- UNIX哲学之我的实践【1】
- Java基础2一基础语法
- 高聚合和低耦合的理解
- java关键字const_java基础知识(三)java关键字
- 企业微信发送信息异常的临时处理方案
- 两融杠杆渐入警戒区 专家警示结构性风险
- 无法修改linux密码Authentication token manipulation error 问题解决
- php+转义反斜线,PHP 转义序列(反斜线)
- 第五章 Spring Boot的数据库编程
热门文章
- mysql开启slowquery_log_MySQL slow_query_log慢查询日志配置详解
- 面试还不知道BeanFactory和ApplicationContext的区别?
- java集合和数组互转
- bsp 总结正规流程
- Codeforces Gym 101142 C. CodeCoder vs TopForces(思维+图论)
- Bluebird-Collections
- Hosting WCF in SharePoint 2007 (Part 1) 基本部署(转)
- 明天发布一个基于Silverlight的类Visio小型绘图工具项目。
- PostgreSQL使用函数实现merge功能
- RedHat下通过Rdesktop连接window远程桌面