给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好。

例如对于

0100100
1000101
0101010
1010101
0101010

在右下角有一个4x4的01间隔方阵。

Input

第一行包含两个整数N和M。

以下N行M列包含一个NxM的01矩阵。

对于30%的数据,1 ≤ N, M ≤ 250

对于100%的数据,1 ≤ N, M ≤ 1000

Output

输出最大的01间隔方阵的边长。

Sample Input

5 7
0100100
1000101
0101010
1010101
0101010

Sample Output

4

面积DP。

加强版:hihocoder1673

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=;
char c[maxn][maxn];
int L[maxn][maxn],H[maxn][maxn];
int a[maxn][maxn];
int main()
{
int n,m,i,j,ans=;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++) scanf("%s",c[i]+);
for(i=;i<=n;i++) L[i][]=;
for(i=;i<=m;i++) H[][i]=;
for(i=;i<=n;i++)
for(j=;j<=m;j++)
L[i][j]=c[i][j]==c[i][j-]?:L[i][j-]+; //左延伸
for(i=;i<=m;i++)
for(j=;j<=n;j++)
H[j][i]=c[j][i]==c[j-][i]?:H[j-][i]+; //上延伸
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(i==||j==||c[i][j]!=c[i-][j-])a[i][j]=; //对角线是一样的
else {
a[i][j]=min(a[i-][j-]+,L[i][j]);
a[i][j]=min(a[i][j],H[i][j]);
}
if(a[i][j]>ans) ans=a[i][j];//这一行复制过来的时候被删了。。。
}
printf("%d\n",ans);
return ;
}

HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)的更多相关文章

  1. [Offer收割]编程练习赛40

    不到一个小时AK,虽然是VP的,舒服,第一次.都简单的一比,没什么可说的. 查找三阶幻方 #pragma comment(linker, "/STACK:102400000,10240000 ...

  2. HihoCoder1665方块游戏([Offer收割]编程练习赛40)(线段树)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方 ...

  3. HihoCoder1663双阶乘的末尾数字([Offer收割]编程练习赛40)(暴力||数学)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定正整数x和k,判断是否存在正整数1 ≤ y ≤ x使得x与y同奇偶且(x!!)/(y!!)的个位数字为k. 其中x!! ...

  4. Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行.每一列 ...

  5. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  6. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  7. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  8. HihoCoder1673 : 01间隔矩阵([Offer收割]编程练习赛41)(单调队列)

    描述 给定一个N × M的01矩阵,小Hi希望从中找到一个01间隔的子矩阵,并且子矩阵的面积越大越好. 例如对于 0101010 1000101 0101010 1010101 0101010 在右侧 ...

  9. [Offer收割]编程练习赛41

    比赛日程安排 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #incl ...

随机推荐

  1. PHP-Manual的学习----【语言参考】----【类型】

    2017年7月17日15:18:02      该看Boolean 布尔类型1.PHP 支持 8 种原始数据类型. 2.四种标量类型: ◦ boolean(布尔型)  ◦ integer(整型)  ◦ ...

  2. Java Enum 比较用 == 还是 eques

    我是把枚举当作常量来使用的,枚举中还有两个自己的属性,关注到这个地方的朋友对枚举已经有了认识,这里就不再编写枚举的demo了,这里我直接说结果吧,在枚举中使用==和equals比较效果是一样的,查看源 ...

  3. 手机测试常见的BUG解析

    今天总结之前学习到关于在手机软件测试过程中经常出现的一些现象,这些现象都是什么原因导致的,我们应该如何去抓取LOG,抓取的LOG的路径在哪里 下边我们来看 1. 手机遇到   “应用无响应” 有两个原 ...

  4. 我为什么选择采用node.js来做新一代的EasyDarwin RTSP开源流媒体服务器

    在去年我们还未开始开发基于node.js的新版本EasyDarwin RTSP开源流媒体服务器的时候,我写了一篇博客<对EasyDarwin开源项目后续发展的思考:站在巨人的肩膀上再跳上另一个更 ...

  5. 核函数 深度学习 统计学习 强化学习 神经网络 xx

  6. Linux开启防火墙后,设置允许通过的端口

    安装Firewall命令: yum install firewalld firewalld-config Firewall开启端口命令: firewall-cmd --zone=public --ad ...

  7. git clone了整个远程仓库分支

    git之远程标签下载(远程分支) 一般我们发布一个新版本到线上服务器时都会在版本库中打一个标签,这样我们可以随时查看这个打标签的版本,就是说标签其实是版本库中一个快照.git的标签与分支类似,区别是分 ...

  8. lzugis—搭建属于自己的小型的版本号控制SVN

    版权声明:本文为LZUGIS原创文章,未经同意不得转载. https://blog.csdn.net/GISShiXiSheng/article/details/28643575 对于不了解SVN的同 ...

  9. Ext部署在本地tomcat下运行例子

    我本地用的ext6+,从官网下载好Ext后解压到D盘,然后打开tomcat的server.xml,在Host标签内配置 <Context path="/ext-6.2.0" ...

  10. rails dependent

    dependent 可以設定當物件刪除時,也會順便刪除它的 has_many 物件: class Event < ActiveRecord::Base has_many :attendees, ...