首先考虑二维的情况

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. 关于sublime text

    Sublime text2 C/C++ 编译环境设置 (2014-04-10 20:51:16) 转载▼ 标签: sublime c语言 程序设计 gcc cpp 分类: 记录与分享 sublime ...

  2. mysql merge

    merge 是一组 myisam 表的组合, 锁住一个 merge 表它会吧底下所有的表全给锁住. 创建只读表 )) engine = merge union (t1,t2); 创建可插入的表, (以 ...

  3. sysconf和pathconf使用

    问题描述:          查看系统运行时的限制值 问题解决: 执行效果: 源代码:

  4. 针对谷歌默认最小字体12px的正确解决方案 (css、html)

    今天晨会,产品要求把以前12px的字体改小一点,我心想这有什么难的,就随口答应了.哪知,改css的时候,谷歌浏览器中font-size小于12px时,字体就不会再缩小了.当时我的第一反应就是会不会是其 ...

  5. SqlBulkCopy 简单运用

    using(SqlConnection conn = new SqlConnection(str)) { conn.Open(); using (System.Data.SqlClient.SqlBu ...

  6. 11个实用jQuery日历插件

    1. FullCalendar FullCalendar是很出名的jQuery日历插件,它支持拖拽等功能,整合了Google Calendar,而且可以通过JSON来绑定事件,设计师可以轻松地自定义日 ...

  7. Nginx正确记录post日志的方法

    Nginx正确记录post日志的方法 事实上可以很简单,这取决于把 access_log 放在哪个 location 里面. 一,放到包含fastcgi_pass或proxy_pass的Locatio ...

  8. POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)

    题意:给出n个字符,m对关系,让你输出三种情况:     1.若到第k行时,能判断出唯一的拓扑序列,则输出:         Sorted sequence determined after k re ...

  9. 简单易懂的现代魔法——Play Framework攻略3

    接前文:http://www.cnblogs.com/Kassadin/p/4343682.html 目前为止,我们已经研究了Play Framework的体系结构以及Web应用程序的工作原理.本来今 ...

  10. .NET复习笔记

    .NET 基础知识点汇总 课前知识储备. 一.C#与.NET的区别? 1..NET/dotnet:一般指.Net Framework框架,一种平台,一种技术 2.C#(sharp):一种编程语言,可以 ...