bzoj 3140: [Hnoi2013]消毒
3140: [Hnoi2013]消毒
Description
最近在生物实验室工作的小T遇到了大麻烦。
由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a、b、c 均为正整数。为了实验的方便,它被划分为a*b*c个单位立方体区域,每个单位立方体尺寸
为1*1*1。用(i,j,k)标识一个单位立方体,1 ≤i≤a,1≤j≤b,1≤k≤c。这个实验皿已经很久没有人用了,现在,小T被导师要求将其中一些单位立方体区域进 行消毒操作(每个区域可以被重复消毒)。而由于严格的实验要求,他被要求使用一种特定 的F试剂来进行消毒。 这种F试剂特别奇怪,每次对尺寸为x*y*z的长方体区域(它由x*y*z个单位立方体组 成)进行消毒时,只需要使用min{x,y,z}单位的F试剂。F试剂的价格不菲,这可难倒了小 T。现在请你告诉他,最少要用多少单位的F试剂。(注:min{x,y,z}表示x、y、z中的最小 者。)
Input
Output
仅包含D行,每行一个整数,表示对应实验皿最少要用多少单位 的F试剂。
Sample Input
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
HINT
对于区域(1,1,3)-(2,2,4)和(1,1,1)-(4,4,1)消毒,分别花费2个单位和1个单位的F试剂。
ACTY了不得!!!
——————题解——————
这题和棋盘覆盖问题还是挺像的,x*y*z区域(x<y<z),就相当于x个1*y*z的区域。
可是连边的话不是要三分图匹配了吗???!!!!
有些人可能会把整张图搞成二维(就是无视高),但这样答案是不对的。
好吧,注意到x*y*z<=5000,把x变为最小边,则x<=17,那么直接爆搜好了,选取一些面直接扔掉,次数加1,剩下的合成二维图跑一遍最大匹配。。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=;
struct node
{
int a,b,c;
}P[N];
int T,num,tot,ans,a,b,c,i,j,k,I,J,K,x,p[N],f[N],h[];
int head[N],Next[N<<],to[N<<];
void SWAP(int&i,int&j,int&k)
{
if(a>b) swap(i,j);
if(a>c) swap(i,k);
if(b>c) swap(j,k);
}
void add(int x,int y)
{
tot++;
to[tot]=y;
Next[tot]=head[x];
head[x]=tot;
}
int dfs(int x,int M)
{
for(int i=head[x];i!=-;i=Next[i])
{
int y=to[i];
if(p[y]==M) continue;
p[y]=M;
if(f[y]==||dfs(f[y],M))
{
f[y]=x;
return ;
}
}
return ;
}
void Dfs(int x,int cnt)
{
if(cnt>=ans) return;
if(x>a)
{
int i;
tot=;
for(i=;i<=c;i++)
head[i]=-,f[i]=p[i]=;
for(i=;i<=num;i++)
if(h[P[i].a]==) add(P[i].b,P[i].c);
for(i=;i<=b;i++)
{
cnt+=dfs(i,i);
if(cnt>=ans) return;
}
ans=cnt;
}
h[x]=;
Dfs(x+,cnt+);
h[x]=;
Dfs(x+,cnt);
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&a,&b,&c);
num=; for(i=;i<=a;i++)
for(j=;j<=b;j++)
for(k=;k<=c;k++)
{
scanf("%d",&x);
if(x)
{
I=i;J=j;K=k;
SWAP(I,J,K);
num++;
P[num].a=I;P[num].b=J;P[num].c=K;
}
}
SWAP(a,b,c);
ans=a;
Dfs(,);
printf("%d\n",ans);
}
return ;
}
bzoj 3140: [Hnoi2013]消毒的更多相关文章
- 【刷题】BZOJ 3140 [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...
- BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...
- 3140:[HNOI2013]消毒 - BZOJ
题目描述 Description 最近在生物实验室工作的小 T 遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为 a*b*c,a.b.c均为正整数.为了实验的方便,它被划 ...
- 【BZOJ】3140: [Hnoi2013]消毒
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3140 猜一发(显然)有结论:每次一定选择一个平面,即每次操作对答案的贡献都为$1$ 首先可 ...
- [BZOJ3140][HNOI2013]消毒(二分图最小点覆盖)
3140: [Hnoi2013]消毒 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1621 Solved: 676[Submit][Status] ...
- [BZOJ 3140] 消毒
Link: BZOJ 3140 传送门 Solution: 挺好的一道暴力题 首先发现可以每次贪心选择宽度为1的一面,即$1*x*y,1*x*z,1*y*z$ 那么对于与该面垂直的面,相当于解决了一行 ...
- P3231 [HNOI2013]消毒
P3231 [HNOI2013]消毒 二维覆盖我们已经很熟悉了 扩展到三维,枚举其中较小的一维,这里定义为$a$ 以$a$为关键字状压,$1$表示该面全选 剩下的面和二维覆盖一样二分图匹配 如果还没接 ...
- BZOJ 3140 消毒(最小顶点覆盖)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3140 题意:最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格 ...
- bzoj千题计划295:bzoj3140: [Hnoi2013]消毒
http://www.lydsy.com/JudgeOnline/problem.php?id=3140 如果只有两维,那就是二分图最小点覆盖 现在是三维,但是a*b*c<=5000,说明最小的 ...
随机推荐
- React的单向数据流与组件间的沟通
今天来给大家总结下React的单向数据流与组件间的沟通. 首先,我认为使用React的最大好处在于:功能组件化,遵守前端可维护的原则. 先介绍单向数据流吧. React单向数据流: React是单向数 ...
- java===java基础学习(2)---运算符,三元操作符,数学函数
主要介绍运算符,和数学函数以及三元运算符: package testbotoo; public class test1 { public static void main(String[] args) ...
- MongoDB的安装配置、基本操作及Perl操作MongoDB
MongoDB的安装配置.基本操作及Perl操作MongoDB http://www.myhack58.com/Article/60/63/2014/42353.htm
- U43597 积木
题目背景 小 XX 感到很无聊,从柜里翻出了小时候玩的积木. 题目描述 这套积木里共有 \(n\) 块,每块积木都是一个长方体. 小 X 想知道这些积木拼成一个积木塔(不必每一块 积木都使用). 所谓 ...
- Fraction to Recurring Decimal——数值处理&&哈希表
Given two integers representing the numerator and denominator of a fraction, return the fraction in ...
- 稍微谈一下 javascript 开发中的 MVC 模式
随着前台开发日益受到重视,客户端代码比重日益增加的今天,如何在javascript开发里应用MVC模式,这个问题似乎会一直被提到,所以偶在这里粗略的谈一下自己的看法吧. MVC模式的基本理念,是通过把 ...
- Linus 谈软件开发管理经验
原文出处: linuxtoday 译文出处:CSDN // 伯乐在线转注:英文原文写于 2011 年 导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了.作为Linux ...
- cookie笔记(二)
小荔枝 增 删 查 改 <form action="javascript:void(0)" method="get" accept-charset=&qu ...
- Windows 上面优秀的工具软件推荐
Windows 上面优秀的工具软件推荐 一.下载软件 1.速盘 - 度盘神器 简介: 使百度网盘保持全速下载免受限速困扰! 下载: speedpan 2.http下载工具 百度网盘破解下载器:prox ...
- C/C++ 基础知识
C/C++ 基础知识 C 语言优秀学习网站 [C Programming Language] C 语言的注释 单行注释 /* comment goes here */ // comment goes ...