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两种字符,然后让你找一个最大的子矩阵,这个最大的子矩阵 ...
随机推荐
- 实现从sql server存取二进制图片
转:http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/27/1554440.html 1.存取图片(1).将图片文件转换为二进制并直接 ...
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
- Laravel5 cookie和session设置
Cookies Laravel会加密所有已创建的cookie信息,并附加上授权码,当客户端擅自修改cookie信息时,该cookie将被废弃,从而保证安全性. 获取一个指定的cookie值 $valu ...
- 高可用集群heartbeat全攻略
heartbeat的概念 Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...
- android之location 根据接口获取经纬度信息
http://maps.googleapis.com/maps/api/geocode/json?address=%E7%A6%8F%E5%BB%BA&sensor=falsehttp://m ...
- c#图片上绘制半透明矩形
p.CreateGraphics().FillRectangle( ,Color.LightGreen)), iLeft, iTop, iRight - iLeft, iBottom - iTop); ...
- 89、Android EditText 悬浮停靠
package com.willen.topFloatDemo; import android.content.Context; import android.os.Handler; import a ...
- 日期选择控件-laydate
laydate控件非常简单易用,只需要调用一个个函数就可以轻松实现日期时间选择. <%@ page language="java" import="java.uti ...
- 查看sql server数据库文件信息
--drop table #dbfiles --deallocate cursor1 ------ declare cursor1 cursor for SELECT name from sys.da ...
- C#委托多播、Lambda表达、多线程、任务
class Program { static void Main(string[] args) { Action<double> ops = MathOperations.Mutiply; ...