题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2870

分析:分别转换成'a','b','c'三种来求,其实就跟hdu1505一样了。。。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define inf 1<<30
using namespace std;
char s[][],str[][];
int sum[][],l[],r[];
int n,m;
int solve(char ch,char a,char b,char c)
{
int t;
memset(sum,,sizeof(sum));
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
{
if(s[i][j]==a||s[i][j]==b||s[i][j]==c)str[i][j]=ch;
else str[i][j]=s[i][j];
}
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
{ if(str[i][j]==ch)sum[i][j]=sum[i-][j]+;
else sum[i][j]=;
}
int ans=-;
for(int i=; i<=n; i++)
{
l[]=;
r[m]=m;
for(int j=; j<=m; j++)
{
t=j;
while(t>&&sum[i][j]<=sum[i][t-])t=l[t-];
l[j]=t;
}
for(int j=m-; j>=; j--)
{
t=j;
while(t<m&&sum[i][j]<=sum[i][t+])t=r[t+];
r[j]=t;
}
for(int j=; j<=m; j++)
ans=max(ans,(r[j]-l[j]+)*sum[i][j]);
}
return ans;
}
int main()
{
while(scanf("%d%d",&n,&m)>)
{
for(int i=;i<=n;i++)scanf("%s",s[i]+);
int ans=-;
ans=max(ans,solve('a','w','y','z'));
ans=max(ans,solve('b','w','x','z'));
ans=max(ans,solve('c','x','y','z'));
printf("%d\n",ans);
}
}

hdu2870(dp求最大子矩阵)的更多相关文章

  1. hdu 2870(dp求最大子矩阵)

    题意:让你求的是由同一字母组成的最大子矩阵,w可以变成a或者b,x可以变成b或者c,y可以变成a或者c,z可以变成a或者b或者c. 分析:这是hdu 1506.hdu 1505的加强版,具体的分析看我 ...

  2. hdu 1505(dp求最大子矩阵)

    题意:就是让你求出全由F组成的最大子矩阵. 分析:这是hdu 1506的加强版,只不过这道题变成了2维的,那我们就一行一行的来.具体的分析见1506的博客:http://www.cnblogs.com ...

  3. hdu 1506(dp求最大子矩阵)

    题意:容易理解... 分析:对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下标假设为r,然后矩阵的面积就是(r-l+1)*1:我们从左到 右扫一遍,求出每个点的 ...

  4. hdu1506(dp求最大子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 分析: 对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下 ...

  5. hdu1505(dp求最大子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 分析: 这题是HDU 1506 的加强版,定义一个二维数组,d[i][j]表示第i行j列元素在前 ...

  6. hdu 1506 Largest Rectangle in a Histogram ((dp求最大子矩阵))

    # include <stdio.h> # include <algorithm> # include <iostream> # include <math. ...

  7. BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp

    1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...

  8. poj 1050 To the Max_dp求最大子矩阵和

    题意:求最大子矩阵和 利用dp[i]每次向下更新,构成竖起的单条矩阵,再按不小于零就加起来来更新,构成更大的矩阵 #include <iostream> #include<cstdi ...

  9. POJ1050To the Max(求最大子矩阵)

    题目链接 题意:给出N*N的矩阵,求一个子矩阵使得子矩阵中元素和最大 分析: 必备知识:求一组数的最大连续和 int a[N]; ,maxn = -INF; ; i <= n; i++) { i ...

随机推荐

  1. Qt 智能指针学习

    原地址:http://blog.csdn.net/dbzhang800/article/details/6403285 从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 ^_^ #include & ...

  2. PHP开发经验中介(thinkphp3.2使用技巧)

    1.在模板中截取字符串 {$vo.create_date|mb_substr=###,0,10,'utf-8'}

  3. Swift - 多线程实现方式(1) - NSThread

    1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...

  4. Cocos2d-x学习笔记(5)

    Cocos2d-x基本元素介绍: 1.CCDirector:大总管 这是控制游戏流程的主要组件,包含设定游戏呈现窗体.FPS显示.默认帧率上限.纹理颜色位宽等切换当前游戏场景.暂停或恢复场景执行.通过 ...

  5. python输出htmltestrunner中文乱码如何解决

    python unittest要产生一个可看的报告,需要借助一个第三方的包 下载HTMLTestRunner.py 第三方库 ,参考地址: http://tungwaiyip.info/softwar ...

  6. nodejs、gulp调试工具node-inspector使用

    俗话说欲善其功,必先利其器. 作为目前新型的Web Server开发栈倍受开发者关注的Nodejs来说,调试技术是学习开发的基石,所以对于开始学习Nodejs童鞋来说,Nodejs的调试工具使用是必不 ...

  7. 浅析——SCTP协议(转)

    SCTP处于SCTP用户应用层与IP网络层之间,它运用“关联”(association)这个术语定义交换信息的两个对等SCTP用户间的协议状态 .SCTP也是面向连接的,但在概念上,SCTP“关联”比 ...

  8. zabbix 获取jvm session信息

    zabbix:/root# java -jar /root/cmdline-jmxclient-0.10.3.jar - 121x:5566 "Catalina:type=Manager,c ...

  9. Mysql找回管理员password

    我们使用MYSQL的时候有可能由于种种原因忘记ROOTpassword,假设是那样数据库可能就废掉了.可是今天给大家分享下找回ROOTpassword的方法或者说是在不知道rootpassword的情 ...

  10. flask开发restful api

    flask开发restful api 如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restfu ...