bzoj1057[ZJOI2007]棋盘制作 悬线法DP
来源:互联网 发布:淘宝客cms源码 编辑:程序博客网 时间:2024/05/17 23:38
题意略。
这题应该是悬线法的一个基础应用,这个方法其实就是DP的一种。
现在我们假设有一条线从i,j出发,根据题目01交替的条件,分别向上,左右三个方向进行延伸,那么最后的矩形面积就是左右长度*向上延伸的长度,正方形则是取两者最小值然后平方。
#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e5+5;const int inf=2147483646;int n,m;int mp[2005][2005],h[2005][2005],l[2005][2005],r[2005][2005];int ans1,ans2;int main(){ scanf("%d%d",&n,&m); fo(i,1,n) { fo(j,1,m) { scanf("%d",&mp[i][j]); if (mp[i][j]!=mp[i-1][j])h[i][j]=h[i-1][j]+1; else h[i][j]=1; } } fo(i,1,n) { fo(j,1,m) { l[i][j]=j; while (l[i][j]>1&&h[i][l[i][j]-1]>=h[i][j]&&mp[i][l[i][j]]!=mp[i][l[i][j]-1]) l[i][j]=l[i][l[i][j]-1]; } fd(j,m,1) { r[i][j]=j; while (r[i][j]>1&&h[i][r[i][j]+1]>=h[i][j]&&mp[i][r[i][j]]!=mp[i][r[i][j]+1]) r[i][j]=r[i][r[i][j]+1]; } fo(j,1,m) { int chang=r[i][j]-l[i][j]+1; ans2=max(ans2,chang*h[i][j]); chang=min(chang,h[i][j]); ans1=max(ans1,chang*chang); } } printf("%d\n%d\n",ans1,ans2);}
阅读全文
0 0
- 【bzoj1057】【ZJOI2007】【棋盘制作】【悬线法+dp】
- bzoj1057[ZJOI2007]棋盘制作 悬线法DP
- [悬线法] BZOJ1057 [ZJOI2007]棋盘制作
- [BZOJ1057]ZJOI2007棋盘制作|DP|单调栈
- BZOJ1057: [ZJOI2007]棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- bzoj1057: [ZJOI2007]棋盘制作
- [bzoj1057][ZJOI2007]棋盘制作
- 【bzoj1057】[ZJOI2007]棋盘制作
- 【BZOJ1057】【ZJOI2007】棋盘制作
- bzoj1057 [ZJOI2007]棋盘制作
- bzoj1057 [ZJOI2007]棋盘制作
- [BZOJ1057][ZJOI2007]棋盘制作(悬线法)
- [bzoj1057][dp]棋盘制作
- [BZOJ1057][ZJOI2007]棋盘制作 (单调栈/悬线法)
- 【BZOJ1057】【codevs1428】棋盘制作,悬线法
- 【BZOJ1057】【ZJOI2007】棋盘制作 最大01子矩阵/正方形
- 高通8909平台AEC测试方法总结
- 类加载器
- 启发式算法(Heuristic Algorithm)
- linux下的shell 快捷键
- 关于注解@responsebody@RequestBody的笔记
- bzoj1057[ZJOI2007]棋盘制作 悬线法DP
- Java内存溢出与栈溢出
- HTML&CSS基础篇之九:图像
- yuv420数据格式
- Web 安全 PHP 代码审查之常规漏洞
- HTTP
- 基于word2vec的短文本分析---开玩笑,分析什么,只是刚入门的自己的一些感受
- 查看进程死锁的命令
- 8-spring源码3.2.18解读+spring技术内幕(IOC容器的依赖注入(反射+递归调用))