首先考虑二维的情况

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. iOS xcode 8 注释快捷键

    单行注释:在方法的地方按 Command+/ 标注的功能,快捷键是Command + Option + / 需要在方法名的上面(空白)的地方按 Command + Option + /      才管 ...

  2. CentOS6.5安装tomcat7

    把下载的apache-tomcat-7.0.19.tar.gz文件上传到服务器的根目录    #tar zxvf apache-tomcat-7.0.19.tar.gz    #mv apache-t ...

  3. libreoffice转换文档的方法(支持各平台各版本的libreoffice)

    前段时间完成了一个利用libreoffice转换文档进行预览的资源管理系统,用的是jodconvert这个多年未更新的转换项目,由于版本不兼容等原因,导致最新版的libreoffice不能用,浪费了许 ...

  4. How to avoid C# console applications from closing automatically.

    One way is to interop it with msvcrt.dll You can pinvoke this C function into your C# application. T ...

  5. Ext学习-前后交互模式介绍

    在前后台交互模式的介绍中,实际上就是Store中Proxy相关的内容,比如Ajax提交. 所以详细的文档请参考: Ext学习-基础概念,核心思想介绍   中关于数据模型和MVC结构部分. 作者:sdj ...

  6. centos6.5\win7双系统安装配置

    一.安装所需软件 1.分区助手专业版PACNPro.exe(必需):用来对硬盘分区,将磁盘的一部分格式化成Linux可以识别的ext3格式 2.Ext2Fsd(硬盘安装必需,光盘安装不用):因为Win ...

  7. uva 10131

    DP 先对大象体重排序   然后寻找智力的最长升序子列  输出路径.... #include <iostream> #include <cstring> #include &l ...

  8. linux上部署应用

    1.编写traffic.sh 引入相关的jar包及java环境路径 2.crontab -e 加入: */10 * * * * cd /opt/sys/traffic_version/bin & ...

  9. UVA 11174 Stand in a Line (组合+除法的求模)

    题意:村子里有n个人,给出父亲和儿子的关系,有多少种方式可以把他们排成一列,使得没人会排在他父亲的前面 思路:设f[i]表示以i为根的子树有f[i]种排法,节点i的各个子树的根节点,即它的儿子为c1, ...

  10. javascript分享到的源码

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...