P3231 [HNOI2013]消毒
二维覆盖我们已经很熟悉了
扩展到三维,枚举其中较小的一维,这里定义为$a$
以$a$为关键字状压,$1$表示该面全选
剩下的面和二维覆盖一样二分图匹配
如果还没接触过二维覆盖,简要地说一下
代价是$min(x,y)$,假设$x$比$y$小,全染相当于染$x$次$1×y$的区域,故全染不如一条一条染

My complete code:
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL inf=0x3f3f3f3f;
const LL maxn=6000;
inline LL Read(){
LL x=0,f=1; char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0'; c=getchar();
}return x*f;
}
struct node{
LL to,next;
}dis[6000000];
LL a,b,c,T,num,cnt,ans,minn,up;
LL head[maxn],visit[maxn],mat[maxn],que[4][maxn];
bool piece[maxn];
inline void Add(LL u,LL v){
dis[++num]=(node){v,head[u]}; head[u]=num;
}
bool Dfs(LL u,LL val){
for(LL i=head[u];i;i=dis[i].next){
LL v=dis[i].to;
if(visit[v]!=val){
visit[v]=val;
if(!mat[v]){
mat[v]=u;
return true;
}else if(Dfs(mat[v],val)){
mat[v]=u;
return true;
}
}
}
return false;
}
inline void Solve(LL bit){
LL sum=0;
for(LL i=1;i<=a;++i)
if((bit>>(i-1))&1){
piece[i]=false,
++sum;
}else
piece[i]=true;
num=0;
for(LL i=1;i<=b;++i)
head[i]=0;
for(LL i=1;i<=cnt;++i)
if(piece[que[1][i]])
Add(que[2][i],que[3][i]);
for(LL i=1;i<=c;++i)
mat[i]=0,
visit[i]=0;
for(LL i=1;i<=b;++i)
if(Dfs(i,i))
++sum;
ans=min(ans,sum);
}
int main(){
T=Read();
while(T--){
cnt=0;
a=Read(),b=Read(),c=Read();
for(LL i=1;i<=a;++i)
for(LL j=1;j<=b;++j)
for(LL k=1;k<=c;++k)
if(Read()){
que[1][++cnt]=i,
que[2][cnt]=j,
que[3][cnt]=k;
}
minn=min(a,min(b,c));
if(minn==b){
swap(a,b);
swap(que[1],que[2]);
}else if(minn==c){
swap(a,c);
swap(que[1],que[3]);
}
up=(1<<a); ans=inf;
for(LL i=0;i<up;++i)
Solve(i);
printf("%lld\n",ans);
}
return 0;
}
P3231 [HNOI2013]消毒的更多相关文章
- [BZOJ3140][HNOI2013]消毒(二分图最小点覆盖)
3140: [Hnoi2013]消毒 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1621 Solved: 676[Submit][Status] ...
- bzoj 3140: [Hnoi2013]消毒
3140: [Hnoi2013]消毒 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数 ...
- BZOJ3140:[HNOI2013]消毒——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3140 https://www.luogu.org/problemnew/show/P3231 最近在 ...
- 3140:[HNOI2013]消毒 - BZOJ
题目描述 Description 最近在生物实验室工作的小 T 遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为 a*b*c,a.b.c均为正整数.为了实验的方便,它被划 ...
- bzoj3140: [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c ...
- 【刷题】BZOJ 3140 [Hnoi2013]消毒
Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc个单位立 ...
- bzoj3140: [Hnoi2013]消毒(二分图)
题目描述 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c个单位立方体区 ...
- [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)
传送门 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc ...
- [HNOI2013]消毒
题目大意: 网址:https://www.luogu.org/problemnew/show/3231 大意:a×b×c的三维空间里有a×b×c个点(x,y,z),其中有些点需要被消除. 消除的方法为 ...
随机推荐
- nx sdk
最近在做ns 任天堂略坑.. 他想做成一键安装,可总是有些问题,这样再去找就很麻烦了.都是包在里面的,要看很多文档 第一个问题是 NintendoSDK Configuration Manager 这 ...
- struts2中迭代的使用方法
struts2 Html代码 <s:iterator value="resultList" id="user" status="st&qu ...
- oracle行锁select for update
oracle行锁select for update 学习了:https://blog.csdn.net/zdwzzu2006/article/details/50490157 学习了:https:// ...
- vuex 中关于 mapMutations 的作用
mapMutations 工具函数会将 store 中的 commit 方法映射到组件的 methods 中.和 mapActions 的功能几乎一样,我们来直接看它的实现: export funct ...
- hdu4405Aeroplane chess 概率dp水题
//从0到n有n+1个格子 //对于格子i,掷一次骰子的数为x.那么能够从位置i到位置i+x //格子之间有连线,假设格子a和b有连线,那么从a到b不用掷骰子 //求从0到n的骰子掷的次数的期望 // ...
- GitFlow工作流常用操作流程
1. 主要分支介绍 1.1 master分支 主分支,产品的功能全部实现后,最终在master分支对外发布. 1.2 develop分支 开发分支,基于master分支克隆,产品的编码工作在此分支进行 ...
- jenkins 构建一个前端web项目
Jenkins发布web前端代码 “系统管理”“管理插件”“已安装” 检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它并安装 ...
- typedef,结构体,共用体,联合体
typedef的用途: 封装数据类型,方便移植 简化函数指针的定义 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/ ...
- 本地aar文件引用
有时须要使用第三方的aar库.或是project源码越来越大.项目内分工须要或出于模块化考虑.须要引用aar文件. arr就像C/C++中的静态库. 怎样建一个aar.网上的文章非常多,这里不再重述. ...
- SQL Server中排名函数row_number,rank,dense_rank,ntile详解
SQL Server中排名函数row_number,rank,dense_rank,ntile详解 从SQL SERVER2005开始,SQL SERVER新增了四个排名函数,分别如下:1.row_n ...