2017.3.31 棋盘制作 失败总结
来源:互联网 发布:小黄鸭软件 编辑:程序博客网 时间:2024/06/04 19:56
其实这种在平面里找子矩形有固定的套路:
找出往左延伸的 再上下找、、
但是还是跪了 毕竟弱、、
码:
#include<iostream>#include<cstdio>using namespace std;#define N 3000int zhan[N],up[N],top,n,m,i,j,f[N][N];int ans1,ans2;bool b[N][N];int main(){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=m;j++){scanf("%d",&b[i][j]);}for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(j==1||b[i][j-1]==b[i][j]^1)f[i][j]=f[i][j-1]+1;else f[i][j]=1;//cout<<f[i][j]<<" ";}//cout<<endl;}for(j=1;j<=m;j++){top=0;for(i=1;i<=n+1;i++){ up[i]=i; while((b[i][j]==b[i-1][j]||f[i][j]<f[zhan[top]][j])&&top!=0){ // if(b[i][j]==b[i-1][j])cout<<"oo";if(i-up[zhan[top]]==f[zhan[top]][j]){ ans1=max(ans1,(i-up[zhan[top]])*f[zhan[top]][j]); ans2=max(ans2,(i-up[zhan[top]])*f[zhan[top]][j]); }else ans2=max(ans2,(i-up[zhan[top]])*f[zhan[top]][j]); if(b[i][j]!=b[i-1][j])up[i]=up[zhan[top]];--top;} zhan[++top]=i;} }printf("%d\n%d",ans1,ans2);}
0 0
- 2017.3.31 棋盘制作 失败总结
- 【悬线法】棋盘制作
- 【棋盘制作】题解
- 【ZJOI2007】【悬线法】棋盘制作
- VIJOS P1351 棋盘制作
- 【ZJOI2007】【悬线法】棋盘制作
- 单调栈-棋盘制作
- CodeVS1428 棋盘制作
- 1057: [ZJOI2007]棋盘制作
- 1057: [ZJOI2007]棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- [ZJOI2007]棋盘制作
- ZJOI2007棋盘制作
- BZOJ1057: [ZJOI2007]棋盘制作
- [ZJOI2007] 棋盘制作
- 棋盘格制作收藏
- BZOJ1057: [ZJOI2007]棋盘制作
- bzoj1057: [ZJOI2007]棋盘制作
- CSS 盒子模型
- 中间件
- 前端开发调试经验
- yii2 leftjoin 不显示子表的属性
- Maven 私有库和本地的安装与配置(一)
- 2017.3.31 棋盘制作 失败总结
- String源码分析(replace、split)(三)
- linux服务器svn部署项目总结
- 使用word2vec训练wiki中文语料
- sql server 实现分页方法
- 单元测试方法
- JavaScript基础
- C++的静态变量
- php正则表达式的使用方法