SP277 CTGAME - City Game 题解
前置知识
解法
令 \(f_{i,j}(1 \le i \le n,1 \le j \le m)\) 表示从 \((1,j)\) 到 \((i,j)\) 中以 \((i,j)\) 结尾的均为 F
的子串长度,即 \((i,j)\) 上面可延伸的最大距离(子矩形的长)。
用单调栈的第一维存储子矩形的长,第二维存储子矩形的宽。考虑依次枚举每一行和每一列,进行出入栈的操作。当枚举到 \((i,j)\) 的位置时,记录子矩形的宽 \(num\),有如下操作:
- 对于栈中原来的元素中大于当前的长 \(f_{i,j}\),要将其弹出栈,计数器 \(num\) 加 \(1\)。
- 子矩形的宽为弹出栈的元素个数。
- 其所形成的子矩形面积为 $num \times $ 栈中当前的元素。
- 将所得到的长 \(f_{i,j}\) 和宽 \(num\) 入栈。
代码
#include<bits/stdc++.h>
using namespace std;
int f[1001][1001];
int main()
{
int n,m,t,v,i,j,ans,num;
char pd;
cin>>t;
for(v=1;v<=t;v++)
{
ans=0;
cin>>n>>m;
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>pd;
if(pd=='F')
{
f[i][j]=f[i-1][j]+1;
}
}
}
for(i=1;i<=n;i++)
{
stack<pair<int,int>> s;
s.push(make_pair(f[i][1],1));
for(j=2;j<=m;j++)
{
num=0;
while(s.empty()==0&&s.top().first>=f[i][j])
{
num+=s.top().second;
ans=max(ans,num*s.top().first);
s.pop();
}
s.push(make_pair(f[i][j],num+1));
}
num=0;
while(s.empty()==0)
{
num+=s.top().second;
ans=max(ans,num*s.top().first);
s.pop();
}
}
cout<<ans*3<<endl;
}
return 0;
}
后记
多倍经验:P4147 | P5943 | UVA1330
SP277 CTGAME - City Game 题解的更多相关文章
- 题解 POJ1964/UVA1330/SP277 【City Game】
题目链接: https://www.luogu.org/problemnew/show/UVA1330 http://poj.org/problem?id=1964 https://www.luogu ...
- 算法与数据结构基础 - 贪心(Greedy)
贪心基础 贪心(Greedy)常用于解决最优问题,以期通过某种策略获得一系列局部最优解.从而求得整体最优解. 贪心从局部最优角度考虑,只适用于具备无后效性的问题,即某个状态以前的过程不影响以后的状态. ...
- upc组队赛5 Ground Defense【枚举】
Ground Defense 题目描述 You are a denizen of Linetopia, whose n major cities happen to be equally spaced ...
- 【sql】leetcode习题 (共 42 题)
[175]Combine Two Tables (2018年11月23日,开始集中review基础) Table: Person +-------------+---------+ | Column ...
- mysql学习 | LeetCode数据库简单查询练习
力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...
- bzoj3125: CITY 题解
3125: CITY Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 486 Solved: 213[Submit][Status][Discuss] ...
- 题解-CF1239D Catowice City
CF1239D Catowice City 有 \(n\) 个人和 \(n\) 只猫.有 \(m\) 对人猫友谊,即第 \(u_i\) 个人认识第 \(v_i\) 只猫,保证第 \(i\) 个人和第 ...
- ZOJ 3195 Design the city 题解
这个题目大意是: 有N个城市,编号为0~N-1,给定N-1条无向带权边,Q个询问,每个询问求三个城市连起来的最小权值. 多组数据 每组数据 1 < N < 50000 1 < Q ...
- 题解 CF821D 【Okabe and City】
其实,这道题不用long long也能AC. 题意是给你一个矩阵,有一些格子被点亮有一些没有,每一次只能在被点亮的格子上面走. 然后你每一次都可以选择点亮一行或一排(非永久),现在问你最少点多少次可以 ...
- codeforces CF475 ABC 题解
Bayan 2015 Contest Warm Up http://codeforces.com/contest/475 A - Bayan Bus B - Strongly Connected Ci ...
随机推荐
- ThreadLocal应用及理解
转载请注明出处: 1. 先展示threadLocal的一个简单封装,该封装用来在不同的请求线程中解析用户参数.在请求经过过滤器时, 对用户的信息进行设置入 ThreadLocalContext 中,可 ...
- Angular系列教程之单向绑定与双向绑定
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- SV Clocking Review
clocking会设置input和output的延时 default input #3ns output #1ns 数据是在时钟上升沿驱动的,在时钟上升沿,将vld驱动到dut,dut中也会在时钟上升 ...
- 【ThreadX】Azure RTOS ThreadX概述
Azure RTOS ThreadX是Microsoft的高级工业级实时操作系统(RTOS),专门用于深度嵌入式,实时和IoT应用程序.Azure RTOS ThreadX提供了高级计划,通信,同步, ...
- [转帖]MySQL 8.2.0 GA
https://cloud.tencent.com/developer/article/2353798 MySQL新的进化版8.2.0于2023年10月25日发行,让我们一起快速浏览一下该版本发生哪些 ...
- [转帖]Django10——从db.sqlite3迁移到MySQL
https://blog.csdn.net/weixin_47197906/article/details/124889477 文章目录 1.查看Django支持的数据库 2.修改数据库配置 1.查看 ...
- [转帖]shell脚本实现文本内容比较交互程序
背景介绍 脚本基于Comm命令进行功能封装,考虑到命令执行前需要对文本进行排序,并且在多文件需要比较内容时可能会导致多个文本混乱,因此使用Shell封装成了一个交互式程序,快速对文件内容进行判断和输出 ...
- [转贴]一图弄懂ASCII、GB2312、GBK、GB18030编码
一图弄懂ASCII.GB2312.GBK.GB18030编码 https://blog.csdn.net/LightUpHeaven/article/details/92008630 转载君子不器. ...
- 使用rpm打包nacos然后部署为systemd服务开机自动启动的方法
背景 Nacos是阿里开源的服务注册组件,能够简单的实现微服务的注册与发现机制. 但是官方并没有提供 sytemd的服务脚本, 也没有提供rpm包的方式. 公司里面使用 nacos的场景越来越多, 部 ...
- rabbitmq rpm包安装以及简单设置用户的方法
公司有一台性能比较好的power机器. 同事要求安装rabbitmq 今天尝试进行了一下处理 公司里面有网络有相应的源 性能还不错 第一步安装一下依赖的erlang yum install erlan ...