给你N×M大的矩阵,里面分别有字符‘F'和’R',要找到一个最大的只有‘F'的矩阵,不能包含有’R‘。N,M<=1000。

一开始的思路是单调栈来求最大矩形面积,因为没看清题目不能包含’R'字符,所以算出每行的‘F'字符个数然后单调栈就WA了。。

然后想到要从左边开始,算出连续的‘F'字符个数,然后又WA了。

因为还有右边,所以右边开始的’F'字符也处理一下,也是WA。

接着想到这种情形:

R F F F R

R F F F R

这枚举F的开始结束的话都是不行的,那么因为就两种字符。然后我又上一步一样只是求出R连续的大小,然后统计

lf左边开始‘F'的连续个数然后单调栈

rf右边开始’F'的连续个数然后单调栈

lr左边开始‘R'的连续个数然后单调栈

rr右边开始’R'的连续个数然后单调栈。

那么答案我就觉得是max(lf,rf,n*m-max(lr,rr))

然后也WA,因为我想到一个反例:

R R R R R

R F  F F R

R F  F F R

R F  F F R

R R R R R

仔细观察这个样例,发现其实之前的做法很麻烦,我们最后得出的矩形一定是有左边的(废话),但是这个左边不确定,只要确定了直接用单调栈就出来了。

所以想到可以枚举K列,每次从第K列开始算。代码如下:

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std; int n,m,arr[],stk[],w[];
char ma[][],ss[];
long long ans;
int main() {
int k;
scanf("%d",&k);
while(k--) {
long long lr,rr,lf,rf;
lr=rr=lf=rf=;
memset(stk,,sizeof stk);
ans=;
memset(w,,sizeof w);
scanf("%d%d",&n,&m);
for(int i=; i<=n; ++i) {
for(int j=; j<=m; ++j)
scanf("%s",ss),ma[i][j]=ss[]; }
for(int k=; k<=m; ++k) {
for(int i=; i<=n; ++i) {
int tmp=;
int j=k;
while(j<=m&&ma[i][j++]!='R')
++tmp;
/*
for(int j=1;j<=m;++j)
if(ma[i][j]=='F')
++tmp;
*/
arr[i]=tmp;
}
memset(stk,,sizeof stk);
memset(w,,sizeof w);
lf=;
arr[n+]=;
int p=;
for(int i=; i<=n+; ++i) {
if(arr[i]>stk[p])
stk[++p]=arr[i],w[p]=;
else {
int wid=;
while(stk[p]>arr[i]) {
wid+=w[p];
lf=max(lf,(long long)wid*stk[p]);
--p;
}
stk[++p]=arr[i];
w[p]=wid+;
}
}
ans=max(ans,lf);
}
printf("%lld\n",ans*);
}
return ;
}

POJ1964-City Game的更多相关文章

  1. [POJ1964]City Game (悬线法)

    题意 其实就是BZOJ3039 不过没权限号(粗鄙之语) 同时也是洛谷4147 就是求最大子矩阵然后*3 思路 悬线法 有个博客讲的不错https://blog.csdn.net/u012288458 ...

  2. 题解 POJ1964/UVA1330/SP277 【City Game】

    题目链接: https://www.luogu.org/problemnew/show/UVA1330 http://poj.org/problem?id=1964 https://www.luogu ...

  3. BZOJ 2001: [Hnoi2010]City 城市建设

    2001: [Hnoi2010]City 城市建设 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1132  Solved: 555[Submit][ ...

  4. History lives on in this distinguished Polish city II 2017/1/5

    原文 Some fresh air After your time underground,you can return to ground level or maybe even a little ...

  5. History lives on in this distinguished Polish city 2017/1/4

    原文 History lives on in this distinguished Polish city Though it may be ancient. KraKow, Poland, is a ...

  6. #1094 : Lost in the City

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi gets lost in the city. He does not know where he is ...

  7. GeoIP Legacy City数据库安装说明

    Here is a brief outline of the steps needed to install GeoIP Legacy City on Linux/Unix. The installa ...

  8. [POJ3277]City Horizon

    [POJ3277]City Horizon 试题描述 Farmer John has taken his cows on a trip to the city! As the sun sets, th ...

  9. 2015年第8本(英文第7本):the city of ember 微光城市

    书名:the City of Ember(中文名:微光城市) 作者:Jeanne DuPrau 单词数:6.2万 不重复单词数:未知 首万词不重复单词数:未知 蓝思值:未知 阅读时间:2015年4月2 ...

  10. 离散化+线段树 POJ 3277 City Horizon

    POJ 3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18466 Accepted: 507 ...

随机推荐

  1. Java 定时任务的几种实现方式

    JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器]  近期项目开发中需要动态的添加定时任务,比如在某个活动结束时,自动生成获奖名单,导出excel等,此类任务由于活动 ...

  2. Jmeter固定定时器(Constant Timer)

    如上图,Constant Timer是jmeter固定定时器元件 一般用来设置延时的,放在某个请求下,表示Constant Timer配置的指定时间后,再开始发起这个请求操作(单位:毫秒) 根据Con ...

  3. aop原理及理解

    概念 Aspect Oriented Programming,面向切面编程,实际上它是一个规范.一种设计思路,总之是抽象的. 先上图 使用目的 从项目结构上来说 对业务逻辑的各个部分进行隔离,降低业务 ...

  4. jumpserver笔记

    一.安装docker使用官方脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 二.拉取jumperse ...

  5. C#读取OPC server

    1.安装opc server https://blog.csdn.net/yhtppp/article/details/80676118 2.c#读取opc https://github.com/le ...

  6. Python设计模式 - UML - 活动图(Activity Diagram)

    简介 活动图描述从一个活动到另一个活动的执行顺序.约束条件.引用对象及状态结果等方面的控制流,适用于对业务用例.工作流程或程序实现建模. 活动图建模步骤 - 确定活动图的范围和边界,对哪些工作流.哪些 ...

  7. FormsAuthentication 票据前后台登录导致掉线

    一.前后台的用户信息都是采用.NET自带的FormsAuthentication 的ticket存取用户信息, 但是如果前后台用相同的用户使用票据这个会导致一方登陆后另一方会掉线,需要重新登陆. 二. ...

  8. vue根据路由变换,切换导航栏样式

    <ul> <li> <router-link :to="{name: 'home'}" class="active_item" e ...

  9. EasyUI的datagrid加载数据去掉遮罩

    转自:https://blog.csdn.net/why15732625998/article/details/77977570 代码: $(".datagrid-mask").r ...

  10. sort排序在苹果与安卓端不一致问题

    一.问题 在使用sort排序时,若遇到相同数据或非数值数据时,会出现苹果手机与安卓手机排序不一致问题 var arr = [{ "id": "52", &quo ...