hdu1505
the main algorithm as the 1506
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
char gird[][];
int num[][];
int m,n;
int find(int a){
int i,j,res,max;
int t;
int l[],r[];
l[]=; r[m]=m;
for(i=;i<=m;++i){
t=i;
if(num[a][i]==){
l[i]=i;
continue;
}
while(t>&&num[a][i]<=num[a][t-])
t=l[t-];
l[i]=t;
}
for(i=m-;i>=;--i){
t=i;
if(num[a][i]==){
r[i]=i;
continue;
}
while(t<m&&num[a][i]<=num[a][t+])
t=r[t+];
r[i]=t;
}
res=;
for(i=;i<=m;++i){
if( (r[i]-l[i]+)**num[a][i] > res )
res = (r[i]-l[i]+)**num[a][i];
} /*
for(i=1;i<=m;++i)
cout<<num[a][i]<<" ";
cout<<endl;
cout<<"left-----"<<endl;
for(i=1;i<=m;++i)
cout<<l[i]<<" ";
cout<<endl;
cout<<"right---"<<endl;
for(i=1;i<=m;++i)
cout<<r[i]<<" ";
cout<<endl;
cout<<res<<endl; */ return res;
}
int init(){
cin>>n>>m;
int i,j,tmp;
for(i=;i<=n;++i)
for(j=;j<=m;++j)
cin>>gird[i][j];
for(j=;j<=m;++j)
if(gird[][j]=='F') num[][j]=;
else num[][j]=;
for(i=;i<=n;++i)
for(j=;j<=m;++j){
if(gird[i][j]=='F') num[i][j]=num[i-][j]+;
else num[i][j]=;
}
int res=;
for(i=;i<=n;++i){
tmp=find(i);
if(tmp>res) res=tmp;
}
return res;
}
int main(){
int t,i,j;
while(cin>>t){
while(t--){
cout<<init()<<endl;
}
}
return ;
}
hdu1505的更多相关文章
- hdu1505 dp
//Accepted 5196 KB 109 ms //类似hdu1506 //输入数据的格式没有明确的限制 //可能出现以下情况 //5 5 //R //F //F F F //F F F F F ...
- hdu1505(dp求最大子矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 分析: 这题是HDU 1506 的加强版,定义一个二维数组,d[i][j]表示第i行j列元素在前 ...
- HDU1505 City Game(算竞进阶习题)
写了1506顺便写下1505.. 还是求矩形面积,不过要预处理一下以每一个F为底的高度,然后想左右扩展到最大长度即为矩形的长.. 计算方法有点绕,令l[i]表示i的左边界,那么初始化l[i] = i. ...
- HDU1505 City Game 悬线法
题意: 给出一个像这样的矩阵 R F F F F F F F F F F F R R R F F F F F F F F F F F F F F F 求F组成的最大子矩阵(面积最大) 有多组数 ...
- HDU1505(HDU1506的加强版)
昨天打 CF又跪了.近期睡不好睡不好睡不好-感觉整个人都累傻了,根本无办法写下去,只写了一题签到题就跪了orz..从未试过这么悲剧. 今天早上凭着我的意念("怨念").七点又起来了 ...
- hdu1505 暴力或dp优化
题意: 给你一个矩阵,让你在里面找到一个最大的f矩阵.. 思路: 三种方法ac这到题目; 方法(1) 以宽为主,暴力 开一个数组sum[i][j],记录当前这个位置的 ...
- 转载:hdu 动态规划题集
1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数): ...
- DP总结 ——QPH
常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一 ...
- City Game
hdu1505:http://acm.hdu.edu.cn/showproblem.php?pid=1505 题解:给你一个字符矩阵,里面有R和F两种字符,然后让你找一个最大的子矩阵,这个最大的子矩阵 ...
随机推荐
- 冲突--ListView与ScrollView冲突的4种解决方案
众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题: 问题一:ScrollView与ListView嵌 ...
- listview--记录ListView滚动停止位置与设置显示位置
在项目中经常使用到listView控件,当想记录滚动停止时的记录,当点击加载新的数据,从记录的位置开始显示的操作怎么实现尼?分为如下步骤 1.记录位置代码 //声明记录停止滚动时候,可见的位置 pri ...
- JAVA关系运算符
常用的关系运算符: 编号 关系运算符 说明 1 > 大于 2 < 小于 3 == 等于 4 != 不等于 5 >= 大于或等于 6 <= 小于或等于 用关系运算符判断后返回的值 ...
- 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”
火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...
- 树莓派自身摄像头的opencv调用
很多人知道,opencv不能直接对树莓派原装摄像头进行调用,因为raspicam不是V4L驱动,怎样才能使用树莓派原装摄像头,它可比多数usb摄像头清晰和小巧. 具体方法,给树莓派原装摄像头安装一个可 ...
- struts2请求过程源码分析
Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相 ...
- CSS如何实现图片上下垂直居中
方法一: 使用margin方式,使图片在div中上下垂直居中.margin-top值的计算方式是:div的高度/2-图片高度/2. 代码实例如下: <!DOCTYPE html><h ...
- android之ExpandableListActivity
MainActivity.java package com.example.mars_2300_expandablelist; import java.util.ArrayList; import j ...
- Java序列化,serializable
Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象.这种机制允许你将对象通过网络进行传播,并可以随时把对象持久 ...
- chkconfig : No such file or directory
sys_version:12.04LTS For example: #chkconfig --level mysql on /sbin/insserv:No such file or director ...