首先考虑二维的情况

min(x,y)也就意味着确定最小后,另外一维肯定打满

然后最小那个如果是k的话就相当于用k*1次——这不就是行列覆盖吗,二分图秒之

三维呢?考虑到a*b*c<=5000也就是最小的那维不超过17

那么我们直接穷举那维用哪些,然后另外的就跟二维一样了

注意要优化常数

 type node=record
po,next:longint;
end; var e:array[..] of node;
d:array[..,..] of longint;
p,cx,cy:array[..] of longint;
v:array[..] of boolean;
can,f:array[..] of boolean;
x,tt,j,k,len,ans,i,t,a,b,c,a0,b0,c0:longint; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure add(x,y:longint);
begin
inc(len);
e[len].po:=y;
e[len].next:=p[x];
p[x]:=len;
end; procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end; function dfs(x:longint):longint;
var i,y:longint;
begin
i:=p[x];
while i<> do
begin
y:=e[i].po;
if not v[y] then
begin
v[y]:=true;
if (cy[y]=-) or (dfs(cy[y])=) then
begin
cy[y]:=x;
cx[x]:=y;
exit();
end;
end;
i:=e[i].next;
end;
exit();
end; function cal(s:longint):longint;
var i,j:longint;
begin
cal:=s;
len:=;
for i:= to b do
begin
p[i]:=;
cx[i]:=-;
end;
for i:= to c do
cy[i]:=-;
for i:= to t do
if not f[d[i,a0]] then
add(d[i,b0],d[i,c0]);
for i:= to b do
if cx[i]=- then
begin
for j:= to c do
v[j]:=false;
cal:=cal+dfs(i);
if cal>=ans then exit;
end;
end; procedure work(x,s:longint);
var m:longint;
begin
if s>=ans then exit;
if x=a+ then
begin
m:=cal(s);
if m<ans then ans:=m;
end
else begin
f[x]:=false;
work(x+,s);
if can[x] then
begin
f[x]:=true;
work(x+,s+);
f[x]:=false;
end;
end;
end; begin
readln(tt);
while tt> do
begin
dec(tt);
readln(a,b,c);
a0:=; b0:=; c0:=;
t:=;
for i:= to a do
for j:= to b do
for k:= to c do
begin
read(x);
if x= then
begin
inc(t);
d[t,]:=i;
d[t,]:=j;
d[t,]:=k;
end;
end;
if (b<=a) and (b<=c) then
begin
swap(a0,b0);
swap(a,b);
end
else if (c<=a) and (c<=b) then
begin
swap(a0,c0);
swap(a,c);
end;
if b>c then
begin
swap(b0,c0);
swap(b,c);
end;
fillchar(can,sizeof(can),false);
for i:= to t do
can[d[i,a0]]:=true;
ans:=;
for i:= to a do
if can[i] then inc(ans);
fillchar(f,sizeof(f),false);
work(,);
writeln(ans);
end;
end.

bzoj3140的更多相关文章

  1. 【BZOJ3140】消毒(二分图匹配)

    [BZOJ3140]消毒(二分图匹配) 题面 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正 ...

  2. bzoj3140: [Hnoi2013]消毒

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

  3. bzoj千题计划295:bzoj3140: [Hnoi2013]消毒

    http://www.lydsy.com/JudgeOnline/problem.php?id=3140 如果只有两维,那就是二分图最小点覆盖 现在是三维,但是a*b*c<=5000,说明最小的 ...

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

    3140: [Hnoi2013]消毒 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1621  Solved: 676[Submit][Status] ...

  5. BZOJ3140:[HNOI2013]消毒——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3140 https://www.luogu.org/problemnew/show/P3231 最近在 ...

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

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

  7. [BZOJ3140][HNOI2013]消毒:二分图匹配

    分析 假如实验皿是二维的,那么这道题便是一个二分图最小点覆盖问题,可以转化为二分图最大匹配问题,使用匈牙利算法解决. 考虑如何扩展到三维,首先我们发现一次操作的代价为\(min(x,y,z)\).不难 ...

  8. AHOI2018训练日程(3.10~4.12)

    (总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) ...

  9. Hnoi2013题解 bzoj3139~3144

    话说好久没写题(解)了.. 先贴份题解:http://wjmzbmr.com/archives/hnoi-2013-%E9%A2%98%E8%A7%A3/(LJ神题解..Lazycal表示看不懂..) ...

随机推荐

  1. 适配iOS10以及Xcode8-b

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...

  2. Learn know more about big data

    As we all know,we are in a big data age now."Every sword has two slides",as a ITer,we shou ...

  3. [原创] zabbix学习之旅三:agent安装

    部署完zabbix server后,自然要部署zabbix agent.在官方描述中,agent是部署在被监控的机器上,用于采集CPU.内存.磁盘等统计信息,并上报给server用于进一步处理.age ...

  4. asynDBcenter(复习)

    asynDBCenter asynDBCenter是GS和DBCenter之间的模块,有了他GS访问数据库就是异步的了,以前是同步的,加入某个操作很耗时那么GS就在那等待这个返回值. .对于std:: ...

  5. 【机器学习】BP神经网络实现手写数字识别

    最近用python写了一个实现手写数字识别的BP神经网络,BP的推导到处都是,但是一动手才知道,会理论推导跟实现它是两回事.关于BP神经网络的实现网上有一些代码,可惜或多或少都有各种问题,在下手写了一 ...

  6. 引擎设计跟踪(九.10) Max插件更新,地形问题备忘

    最近没有大的更新. 最近本来要做max的骨骼/动画导出, 看导出插件代码的时候, 突然想起之前tagent space导出的疑问, 于是确认了一下. http://www.cnblogs.com/cr ...

  7. java基础知识回顾之---java String final类普通方法的应用之“两个字符串中最大相同的子串”

    /* * 3,两个字符串中最大相同的子串. * "qwerabcdtyuiop" * "xcabcdvbn" *  * 思路: * 1,既然取得是最大子串,先看 ...

  8. 【转载】Dom篇

    一. 初探Dom     1. Dom介绍 二. Dom基础     1. window顶级对象     2. body.document对象事件     3. 通用的HTML元素的事件     4. ...

  9. [Python]读写文件方法

    http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...

  10. Apache源码分析资源

    关于作者张中庆, 目前主要的研究方向是嵌入式浏览器,移动中间件以及大规模服务器设计.目前正在进行Apache的源代码分析,计划出版<Apache源代码全景分析>上 下册.Apache系列文 ...