给你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. jquery cdn bootstrap静态资源库问题

    使用微软静态资源库 <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js">&l ...

  2. C# File API

    [C# File API] 1.System.IO.File Provides static methods for the creation, copying, deletion, moving, ...

  3. Java框架spring 学习笔记(五):Bean定义继承

    子 bean 的定义继承父定义的配置数据.子定义可以根据需要重写一些值,或者添加其他值. 编写HelloWorld.java package com.example.spring; public cl ...

  4. Java Web解决跨域请求

    要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面.JavaScript脚本.css样式,对应的协议.域名和端口完全相同,那么这两个资源就是同 ...

  5. IO输入输出流

    在Java中进行文件的读写,Java IO流是必备的知识. IO流指 的是输入输出流,用来处理设备上的数据.这里的设备指硬盘,内存,键盘录入,网络传输等. 按处理数据类型来分:字节流和字符流. 按流的 ...

  6. 长短steamId互转

    /** * steam_id转换account_id * @param $steamId * @return mixed */ public static function formatAccount ...

  7. cacti 流量图合并

    cacti 安装:https://www.cnblogs.com/weijie0717/p/4072711.html 一.需求介绍 由于交换机的多端口跑同一种流量,需要汇总统计.因此需要见多个端口的流 ...

  8. python——jieba分词过程

    import jieba """函数2:分词函数""" def fenci(training_data): ""&quo ...

  9. max_delay/min_delay和input_delay/output_delay

    今天在使用DC设置随路时钟的时候发现里两个比较容易混淆的设置:max_delay/min_delay和input_delay/output_delay. 1)max_delay/min_delay设置 ...

  10. Scrapy简单入门及实例讲解

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...