bzoj1057: [ZJOI2007]棋盘制作
来源:互联网 发布:windows ime文件 编辑:程序博客网 时间:2024/04/30 16:03
传送门
我们可以先用O(nm)时间求出向左向右扩展的最大距离
然后O(nm)枚举下端点位置(在矩形下面的边上)
计算出当高最高时的宽度,相乘后取max
正方形同理,只要取高度和宽度的min就行了。
uses math;var hei,a,x,y,le,ri:array [0..2005,0..2005] of longint; n,m,i,j,maxju,maxzh:longint;begin read(n,m); for i:=1 to n do for j:=1 to m do read(a[i,j]); for i:=1 to n do begin x[i,1]:=1; for j:=2 to m do if (a[i,j]<>a[i,j-1]) then x[i,j]:=x[i,j-1] else x[i,j]:=j; end; for i:=1 to n do begin y[i,m]:=m; for j:=m-1 downto 1 do if (a[i,j]<>a[i,j+1]) then y[i,j]:=y[i,j+1] else y[i,j]:=j; end; maxju:=0; maxzh:=0; for i:=1 to n do for j:=1 to m do if (a[i,j]<>a[i-1,j]) and (i<>1) then begin hei[i,j]:=hei[i-1,j]+1; le[i,j]:=max(le[i-1,j],x[i,j]); ri[i,j]:=min(ri[i-1,j],y[i,j]); end else begin hei[i,j]:=1; le[i,j]:=x[i,j]; ri[i,j]:=y[i,j]; end; for i:=1 to n do for j:=1 to m do maxju:=max(maxju,hei[i,j]*(ri[i,j]-le[i,j]+1)); for i:=1 to n do for j:=1 to m do maxzh:=max(maxzh,sqr(min(hei[i,j],ri[i,j]-le[i,j]+1))); writeln(maxzh); write(maxju);end.
0 0
- BZOJ1057: [ZJOI2007]棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- bzoj1057: [ZJOI2007]棋盘制作
- [bzoj1057][ZJOI2007]棋盘制作
- 【bzoj1057】[ZJOI2007]棋盘制作
- 【BZOJ1057】【ZJOI2007】棋盘制作
- bzoj1057 [ZJOI2007]棋盘制作
- bzoj1057 [ZJOI2007]棋盘制作
- [悬线法] BZOJ1057 [ZJOI2007]棋盘制作
- [BZOJ1057]ZJOI2007棋盘制作|DP|单调栈
- 【bzoj1057】【ZJOI2007】【棋盘制作】【悬线法+dp】
- [BZOJ1057][ZJOI2007]棋盘制作(悬线法)
- bzoj1057[ZJOI2007]棋盘制作 悬线法DP
- 【BZOJ1057】【ZJOI2007】棋盘制作 最大01子矩阵/正方形
- BZOJ1057 [ZJOI2007]棋盘制作(极大化思想)
- [BZOJ1057][ZJOI2007]棋盘制作(极大子矩形)
- 单调栈——BZOJ1057/Luogu1169 [ZJOI2007]棋盘制作
- 菜鸟java方法小结
- java/MD5
- VS2012 can't find localized resources错误
- MQTT协议笔记之连接和心跳
- Linux开放21端口
- bzoj1057: [ZJOI2007]棋盘制作
- 电子电路 第一章
- 【高性能JavaScript】读书笔记
- hadoop 层面性能调优
- codeforces721A
- 第一天学习MySql(1)-从创建到删除
- TCP网络编程中connect()、listen()和accept()三者之间的关系
- GYM 101128 C.Canvas Painting(优先队列)
- EditPlus修改成护眼色