【以前的空间】bzoj [ZJOI2007]棋盘制作
具体可以去跪《浅谈用极大化思想解决最大子矩形问题》(p.s. 蒟蒻跪了还是很晕,不过想到之前usaco好像是最后一章的一道题……看了下代码顿然醒悟)
也就是如果用o(nm)的方法维护一个极大矩阵?其实很简单,按行处理,维护u[],l[],r[](向上,向左,向右)每一行先预处理处理出这行中每一个点向右能延展多长(right[j]),向左能延展多长(left[j]),然后再开始处理这一行的点,具体做法是比较这个点(i,j)与上行同一列的点(i-1,j)是否可以连在一起,可以的话,那么u[j]++,l[j]=min(left[j],l[j]),r[j]:=min(right[j],r[j]),如果不可以,那么u[j]=1,l[j]=left[j],r[j]=right[j]。记住u[],l[],r[]的作用,他们表示一个如果以这一行为底边,那么包括进j点的最大矩形的形状u[j]*(r[j]+l[j]-1)。然后好像就是这样了吧。
var
map,f:array[..,..]of longint;
left,right,u,l,r:array[..]of longint;
i,j,k,n,m,ans:longint; function min(x,y:longint):longint;
begin
if x>y then exit(y);
exit(x);
end; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; procedure work1;
var
i,j,k:longint;
begin
ans:=;
for i:= to n do
for j:= to m do begin
if (i=)or(j=) then begin
f[i,j]:=;
continue;
end;
if (map[i-][j]=map[i][j])
or (map[i,j-]=map[i,j])
or (map[i-,j-]<>map[i][j]) then begin
f[i,j]:=;
continue;
end;
f[i,j]:=min(f[i-][j],min(f[i,j-],f[i-,j-]))+;
if f[i,j]>ans then ans:=f[i,j];
end;
writeln(ans*ans);
end; procedure work2;
var
i,j,k:longint;
begin
ans:=;
for i:= to n do begin
left[]:=;
right[m]:=;
for j:= to m do
if map[i,j-]<>map[i,j] then left[j]:=left[j-]+ else left[j]:=;
for j:=m- downto do
if map[i,j+]<>map[i,j] then right[j]:=right[j+]+ else right[j]:=;
for j:= to m do begin
if i= then begin
u[j]:=;
l[j]:=left[j];
r[j]:=right[j];
end
else
if map[i-,j]<>map[i,j] then begin
inc(u[j]);
l[j]:=min(l[j],left[j]);
r[j]:=min(r[j],right[j]);
end
else begin
u[j]:=;
l[j]:=left[j];
r[j]:=right[j];
end;
ans:=max(ans,(r[j]+l[j]-)*u[j]);
end;
end;
writeln(ans);
end; begin
readln(n,m);
for i:= to n do
for j:= to m do
read(map[i,j]);
work1;
work2;
end.
p.s. 其实看了丽洁姐的代码,发现自己真是傻掉了,两问明明是可以并在一起求得嘛,(r[j]+l[j]-1)、u[j]不就是矩形的长和高,那么两者中肯定存在一个短边构成的正方形……
【以前的空间】bzoj [ZJOI2007]棋盘制作的更多相关文章
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
- BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )
对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...
- 悬线法 || BZOJ 1057: [ZJOI2007]棋盘制作 || Luogu P1169 [ZJOI2007]棋盘制作
题面:P1169 [ZJOI2007]棋盘制作 题解: 基本是悬线法板子,只是建图判断时有一点点不同. 代码: #include<cstdio> #include<cstring&g ...
- 【BZOJ 1057】 1057: [ZJOI2007]棋盘制作
1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源 于易经的思想,棋盘是一个8*8大小的 ...
- BZOJ 1057:[ZJOI2007]棋盘制作(最大01子矩阵+奇偶性)
[ZJOI2007]棋盘制作 时间限制: 20 Sec 内存限制: 162 MB[题目描述]国际象棋是世界上最古老的博 ...
- BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp
1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...
- 洛谷 P1169 [ZJOI2007]棋盘制作
2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...
- BZOJ1057 [ZJOI2007]棋盘制作(极大化思想)
1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 1848 Solved: 936 [Submit][Sta ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...
随机推荐
- PHP用url传递数组
数组传递这么写: echo "<a href=2.php?info=".base64_encode(serialize($information))." > ...
- DSP5509的中断学习-第4篇
1. 编译工程的时候出现一个问题,如下 specifies large memory model, which is not compatible with small memory 2. 修改工程设 ...
- tcpdump使用
1. tcpdump选项 它的命令格式为: tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s ...
- 成员变量:对象vs指针
一旦类初始化,那么对象必然会被创建,指针则可以在需要时候再去初始化所指向.
- 微信小程序—day02
全局配置 在app.json中,对小程序进行全局配置.官方文档 tabBar是对底部/顶部导航栏的配置,图片的icon 大小限制为40kb,建议尺寸为 81px * 81px 去阿里矢量图网站,找到图 ...
- angular-列表进行添加、编辑等操作时此行变色。
今天接触了一个功能,就是在一个列表中,当你新增或者对第N列进行编辑,删除等操作时这一列会变颜色.让用户对操作了哪行数据更认识更清晰,刷新之后这行的颜色就会消失.我觉得这个很有意思,记录一下.效果如下. ...
- 函数重载(overload)和函数重写(override)
1. 前言: 在C++中有两个非常容易混淆的概念,分别是函数重载(overload)和函数重写(overwirte).虽然只相差一个字,但是它们两者之间的差别还是非常巨大的. 而通过深入了解这两个概念 ...
- javascript打开新窗口
一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name, ...
- 衡量生活成本:消费者价格指数(CPI, Consumer Price Index)
经济学家应该如何把经济中的许多价格加总成一个单一指数,从而能够衡量价格的总体水平呢?他们可以简单地计算所有产品与服务价格的平均值,但是这种方法的不足之处是把所有的产品与服务等同处理.由于人们购买的鸡比 ...
- 软工Hello World!团队第二周博客汇总
2017.10.20-2017.10.26 Scrum会议: 第一天:http://www.cnblogs.com/liusx0303/p/7704482.html 第二天:http://www.cn ...