Description

最近在生物实验室工作的小T遇到了大麻烦。
由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a、b、c 均为正整数。为了实验的方便,它被划分为abc个单位立方体区域,每个单位立方体尺寸为111。用(i,j,k)标识一个单位立方体,1 ≤i≤a,1≤j≤b,1≤k≤c。这个实验皿已经很久没有人用了,现在,小T被导师要求将其中一些单位立方体区域进 行消毒操作(每个区域可以被重复消毒)。而由于严格的实验要求,他被要求使用一种特定 的F试剂来进行消毒。 这种F试剂特别奇怪,每次对尺寸为xyz的长方体区域(它由xyz个单位立方体组 成)进行消毒时,只需要使用min{x,y,z}单位的F试剂。F试剂的价格不菲,这可难倒了小 T。现在请你告诉他,最少要用多少单位的F试剂。(注:min{x,y,z}表示x、y、z中的最小 者。)

Input
第一行是一个正整数D,表示数据组数。接下来是D组数据,每组数据开头是三个数a,b,c表示实验皿的尺寸。接下来会出现a个b 行c列的用空格隔开的01矩阵,0表示对应的单位立方体不要求消毒,1表示对应的单位立方体需要消毒;例如,如果第1个01矩阵的第2行第3列为1,则表示单位立方体(1,2,3)需要被消毒。输入保证满足abc≤5000,T≤3。

Output
仅包含D行,每行一个整数,表示对应实验皿最少要用多少单位 的F试剂。

Sample Input
1
4 4 4
1 0 1 1
0 0 1 1
0 0 0 0
0 0 0 0
0 0 1 1
1 0 1 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0

Sample Output
3

Hint
对于区域(1,1,3)-(2,2,4)和(1,1,1)-(4,4,1)消毒,分别花费2个单位和1个单位的F试剂

solution

抽丝剥茧
先思考在二维平面消毒时,怎么做??
显然,是行列二分图跑最大匹配的板

那么将这个搬到三维,可咱不会三位最大匹配啊!

abc≤500abc\le500abc≤500,所以至少有一个是<17<17<17的
又可以考虑状压了

假设a,b,ca,b,ca,b,c中最小的为aaa
那么枚举状态,如果二进制对应位为111,表示直接把这一层给削去
厚度为111的消毒剂可以做到
剩下的没有削的层,拍扁成二维平面跑最大匹配

code

#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define maxn 5005
vector < int > G[maxn];
int D, a, b, c, ans, tot;
int match[maxn];
int virus[4][maxn];
bool vis[maxn], flag[maxn];bool find( int u ) {for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i];if( vis[v] ) continue;vis[v] = 1;if( ! match[v] || find( match[v] ) ) {match[v] = u;return 1;}}return 0;
}void solve( int s ) {memset( match, 0, sizeof( match ) );for( int i = 1;i <= b;i ++ ) G[i].clear();int cnt = 0;for( int i = 0;i < a;i ++ )if( ( 1 << i ) & s ) flag[i + 1] = 0, cnt ++;else flag[i + 1] = 1;for( int i = 1;i <= tot;i ++ )if( flag[virus[1][i]] ) G[virus[2][i]].push_back( virus[3][i] );for( int i = 1;i <= b;i ++ ) {memset( vis, 0, sizeof( vis ) );if( find( i ) ) cnt ++;}ans = min( ans, cnt );
}int main() {scanf( "%d", &D );while( D -- ) {tot = 0, ans = 0x7f7f7f7f;scanf( "%d %d %d", &a, &b, &c );for( int i = 1;i <= a;i ++ )for( int j = 1;j <= b;j ++ )for( int k = 1, x;k <= c;k ++ ) {scanf( "%d", &x );if( ! x ) continue;++ tot;virus[1][tot] = i;virus[2][tot] = j;virus[3][tot] = k;}int minn = min( a, min( b, c ) );if( minn == b ) swap( a, b ), swap( virus[1], virus[2] );else if( minn == c ) swap( a, c ), swap( virus[1], virus[3] );for( int i = 0;i < ( 1 << a );i ++ )solve( i );printf( "%d\n", ans );}return 0;
}

[HNOI2013]消毒 (匈牙利最大匹配)相关推荐

  1. BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)

    题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...

  2. bzoj3140: [Hnoi2013]消毒(二分图)

    题目描述 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c个单位立方体区 ...

  3. [bzoj3140] [Hnoi2013]消毒

    Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...

  4. bzoj3140: [Hnoi2013]消毒

    Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c ...

  5. [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)

    传送门 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc ...

  6. [NOI2009] 变换序列 (匈牙利最大匹配)

    description - solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个 ...

  7. [Hnoi2013]消毒

    Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...

  8. 3140: [Hnoi2013]消毒

    首先要知道一次打掉一个1*x*y的面是最优的.证明太简单所以略. 然后看这道题的二维版本:bzoj1693 [Usaco2007 Demo]Asteroids   http://www.lydsy.c ...

  9. 膜拜大丹(结论+二元环)

    problem 有两个国家,国家 AAA 有 nnn 座城市,国家 BBB 有 mmm 座城市,两个国家间有若干条单向航线. 具体地,有长度为 nnn 的数组 aaa 和长度为 mmm 的数组 bbb ...

最新文章

  1. Jenkins + Git + Maven + tomcat集成环境搭建
  2. C++11 新增关键字decltype学习
  3. js对当前时间的相关操作
  4. 【常用】鼠标拖动物体移动
  5. oracle asm盘符变了,使用multipath创建ASM磁盘的奇怪现象
  6. enterFrame是什么意思?
  7. 但自去年封测后的cqbgbbs
  8. ubuntu8.04自动挂载硬盘分区
  9. python机器学习库sklearn——k均值聚类
  10. 20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
  11. tongweb使用之端口冲突处理办法
  12. JAVA ECXCEL 考勤导入查询
  13. java点击注册跳转到注册页面_web项目为什么点击注册按钮跳转不到注册页面?...
  14. Vo Mic|旧手机不要扔,一招秒变无线麦克风
  15. 65883-12-7,PEG5-Ms带有甲磺酸基和羟基的PEG连接剂
  16. web前端培训班有哪些
  17. 最全解读西门子MES/MOM平台Opcenter,100多亿美金的数字化之路
  18. 企业wms系统安装在云服务器,wms 云服务器 还是本地
  19. HTML5+CSS3基础入门
  20. 风格迁移(Style Transfer)首次学习总结

热门文章

  1. “甜橙金融杯”数据建模大赛发布,8万重金寻找大数据金融人才!
  2. 干货|MIT线性代数课程精细笔记[第一课]
  3. gamaredon_Gamaredon组织某样本分析
  4. android主动显示流程,Activity加载显示基本流程
  5. php3.23,MySQL 3.23.40 又发布了-PHP教程,PHP基础
  6. 摄像头预览左右翻转_轻薄翻转触控本里的高性能机型:惠普ENVY x360 13评测
  7. 计算机专业杀毒,计算机病毒查杀
  8. Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用
  9. linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...
  10. 软件构造学习笔记-第六周