【HNOI2013】消毒
题面
题解
当只有二维时,就是一个二分图匹配的板子题
三维的时候就很好做了,暴力枚举一维的情况,因为\(\min(x,y,z) = \sqrt{5000} < 18\),于是时间复杂度有保证
代码
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define RG register
#define file(x) freopen(#x".in", "r", stdin);freopen(#x".out", "w", stdout);
#define clear(x, y) memset(x, y, sizeof(x))inline int read()
{int data = 0, w = 1; char ch = getchar();while(ch != '-' && (!isdigit(ch))) ch = getchar();if(ch == '-') w = -1, ch = getchar();while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();return data * w;
}const int maxn(5010);
struct edge { int next, to; } e[maxn];
int head[maxn], e_num, a, b, c, Min, pos[4][maxn], vis[maxn], match[maxn], clean[maxn], ans, cnt, T;inline void add_edge(int from, int to) { e[++e_num] = (edge) {head[from], to}; head[from] = e_num; }
bool dfs(int x)
{for(RG int i = head[x]; i; i = e[i].next){int to = e[i].to; if(vis[to]) continue; vis[to] = true;if(!match[to] || dfs(match[to])) return match[to] = x, true;}return false;
}inline void Doit(int x)
{using std::fill; e_num = 0;fill(head + 1, head + b + 1, 0);fill(match + 1, match + c + 1, 0);fill(clean + 1, clean + a + 1, 1);int res = 0;for(RG int i = 0; i < a; i++)if(x & (1 << i)) clean[i + 1] = 0, ++res;for(RG int i = 1; i <= cnt; i++)if(clean[pos[1][i]]) add_edge(pos[2][i], pos[3][i]);for(RG int i = 1; i <= b; i++){fill(vis + 1, vis + c + 1, 0);if(dfs(i)) ++res;}ans = std::min(ans, res);
}int main()
{T = read();while(T--){cnt = 0; ans = 0x3f3f3f3f;a = read(); b = read(); c = read(); Min = std::min(std::min(a, b), c);for(RG int i = 1, x; i <= a; i++)for(RG int j = 1; j <= b; j++)for(RG int k = 1; k <= c; k++)if((x = read())) ++cnt, pos[1][cnt] = i, pos[2][cnt] = j, pos[3][cnt] = k;using std::swap;if(Min == b) swap(a, b), swap(pos[1], pos[2]);if(Min == c) swap(a, c), swap(pos[1], pos[3]);for(RG int i = 0; i < (1 << a); i++) Doit(i);printf("%d\n", ans);}return 0;
}
转载于:https://www.cnblogs.com/cj-xxz/p/10396342.html
【HNOI2013】消毒相关推荐
- bzoj3140: [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c ...
- [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)
传送门 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc ...
- bzoj3140: [Hnoi2013]消毒(二分图)
题目描述 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c个单位立方体区 ...
- [HNOI2013]消毒 (匈牙利最大匹配)
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...
- [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...
- [bzoj3140] [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...
- BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...
- 3140: [Hnoi2013]消毒
首先要知道一次打掉一个1*x*y的面是最优的.证明太简单所以略. 然后看这道题的二维版本:bzoj1693 [Usaco2007 Demo]Asteroids http://www.lydsy.c ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- # HNOI2012 ~ HNOI2018 题解
HNOI2012 题解 [HNOI2012]永无乡 Tag:线段树合并.启发式合并 联通块合并问题. 属于\(easy\)题,直接线段树合并 或 启发式合并即可. [HNOI2012]排队 Tag:组 ...
最新文章
- 新版中青——青龙羊毛
- 042_CSS3字体
- autojs微博_js实现微博发布小功能
- 关于ajax请求400问题解决
- TensorFlow学习笔记01:图
- 3.6 Batch Norm 为什么奏效?
- [WM C++]从资源文件中加载显示png/jpg图片
- Python- 索引 B+数 比如书的目录
- ElasticHD Windows环境下安装(转载)
- 45. Use member function templates to accept all compatible types.
- python函数手册(1)
- 如何基于FastReport报表工具,生成报表PDF文档展示医院处方笺的内容
- 数字天堂陷入困境_我如何从陷入困境和绝望变成实现我的技术职业梦想
- 说唱天王 Eminem 自传《The Way I am》2
- Excel删除重复行单不删除单元格
- Hyperautomation for the enhancement of automation in industries 论文翻译
- 都是做游戏,为嘛国内外出来的产品相差这么大?
- (17)-- 网页的foot制作
- 虹科小课堂|密度测量,你了解多少?
- RSS阅读——在繁杂的社会接受纯粹的信息 RSS介绍与RSS订阅源分享
热门文章
- Part8 多态性 8.1运算符重载
- Android中attrs.xml文件的使用详解
- Android源码下载(ubuntu12.04(amd64))
- 初学者应该了解的一些SQL语句及hr 用户解锁相关
- vue cli3.0创项目报错‘This may cause things to work incorrectly. Make sure to use the same version for b’
- vue --- cdn导入,一些基本操作
- JAXB vs XStream
- 脚本安装smokeping
- yii2中的rules验证规则
- [转]TortoiseSVN客户端重新设置用户名和密码