hdu1505 City game(最大子矩阵)

『杭电1505』City Game Problem Description Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees,factories and buildings. There is still some space in th 阅读详情

题意:

Bob打算在城市中寻找一块长方形的区域,已知城市中有些地已经被占用,要求我们帮助他选出最大的长方形区域。R代表已被占用,F代表未被占用。

分析:

这是hdu1506的升级版,即从一维变成了二维。但我们依旧可以把它转换成一维,即以每一列为一个底,算出此列中长方形的高度,然后依次按行(即按高度)dp,找出最大值。

这里写图片描述 —————> 这里写图片描述

在每一行找出当前行中第j个点向左向右延伸的最大长度,然后乘以高度即是面积。
注意最终答案要乘以3!!!!
状态转移方程:
if(h[j-1] >= h[j]) L[j] = L[j-1];
if(h[j+1] >= h[j]) R[j] = R[j-1];

具体代码:

#include <set>
#include <numeric>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>
#include <sstream>
#include <map>
#include <functional>

using namespace std;

typedef long long LL;
typedef unsigned long long ULL;
#define REP(idx1,num1) for(int idx1=0;idx1<(num1);idx1++)
#define pb push_back
#define empb emplace_back
#define mp make_pair
#define mem(s) memset(s,0,sizeof(s));
const double EPS = 1e-6;
const int maxn = 1000 + 10;
int d[maxn][maxn];
int l[maxn],r[maxn];
int r1,c1;
void debug()
{
    for(int i = 0; i < r1; ++i){
        for(int j = 0; j < c1; ++j)
            cout <<d[i][j]<<" ";
        cout<<endl;
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&r1,&c1);
        mem(d);
        for(int i = 0; i < r1; ++i)
            for(int j = 0; j < c1; ++j){
                char ch;cin >> ch;
                //cout << ch << endl;
                if(ch == 'F') d[i][j] = (i == 0) ? 1 : d[i-1][j]+1;
            }
        //debug();
        int max_area = 0;
        //从每一行开始
        for(int i = 0; i < r1; ++i){
            for(int j = 0; j < c1; ++j){
                int t = j;
                while(t >= 1 && d[i][t-1] >= d[i][j])
                    t = l[t-1];
                l[j] = t;
            }
            for(int j = c1-1; j >= 0; --j){
                int t = j;
                while(t < c1-1 && d[i][t+1] >= d[i][j])
                    t = r[t+1];
                r[j] = t;
            }
            /*
            for(int j = 0; j < c1; ++j)
                cout << l[j] << " ";
            cout << endl;
            */
            for(int j = 0; j < c1; ++j){
                int area = (r[j] - l[j] + 1) * d[i][j];
                if(max_area < area) max_area = area;
            }
        }
        printf("%d\n",max_area*3);
    }
    return 0;
}
城市群快速生成插件GSG_CityKit_1.2 城市群快速生成插件GSG_CityKit_1.2 内附安装教程 立即下载

相关推荐

【Cadence】 ADS Dynamic Link使用教程

在Cadence617上使用ADS Dynamic Link

乾巽的博客 6074

【UVA1330】City game

题面   Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees, factories and b

清疚的博客 589

元数据及数据仓库相关概念

文章目录元数据(metadata)的概念Data about Data定义技术元数据业务元数据总结数据仓库ODS简单的理解为 Operational Data Store, 运营数据仓储 数据整合层(也叫做数据缓冲层)EDW简单理解为 Enterprise Data Warehouse, 企业数据仓库ODS与EDW之间的差异使用角色数据来源数据获取性能和及时性数据架构数据共享能力数据系统提供应用数...

frone的专栏 3137

【DP】 hdu1505 City Game

City Game http://acm.hdu.edu.cn/showproblem.php?pid=1505 Problem Description Bob is a strategy game programming specialist. In his new city building game the gaming environment is as foll

Ted's 游乐园 2679

Prometheus安装部署说明

1. 安装Prometheus Server   Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启Prometheus Server。 1.1 下载并解压二进制安装包 通过Prometheus的官方网站:https://prometheus.io/download/,下载最新版本的Prometheus安装包 #下载、解压、创建软链接 cd /export/ wget https://githu..

m0_38100619的博客 5013

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

AI+全栈,AI+应用,实操落地,前沿技术 3807

HDU OJ City Game

City Game Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 14 Accepted Submission(s) : 8 Font: Times New Roman | Verdana | Georgia Font Size...

weixin_30273763的博客 215

SigmaStar(星宸科技)SSC33X系列

目前,SSC33X系列已经量产了接近两年,SDK成熟稳定,功耗表现良好,图像效果出色,广泛应用在AI枪机、AI球机、AI云台机、多目摄像机、停车场闸机、人脸门禁、人脸锁、门铃猫眼等产品上。

Comake Online的博客 1万+

HDU 1505 City Game(DP求二维最大子矩阵)

City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5913    Accepted Submission(s): 2533 Problem Description Bob is a strategy ga

HHH的专栏 445

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

baidu_35680696的博客 967

【STM32 Blue Pill编程】-STM32CubeIDE开发环境搭建与点亮LED

本文为使用 STM32Cube IDE 的 STM32 Blue Pill 入门教程。 在本文中,我们将介绍如何控制 STM32 Blue Pill 的 GPIO 引脚。以及开发环境搭建。 本系列文章将重点介绍采用 ARM Cortex-M 的 BluepellSTM32F103C8 微控制器以及如何使用 STM32CubeIDE 对其进行编程。 STM32CubeIDE是STM32官网提供的IDE

视觉与物联智能 1067

HDU1505City Game(最大子矩阵)

题目链接:传送门 分析:题意大概就是要求一个由F和R构成的矩阵中,单单由F构成的最大矩阵 思路:运用到dp思想,但第一次做还是比较难想到,用一个dp数组记录高度,再用两个数组分别来表示某个点向左和向右延伸的最大宽度,最后再计算每块的面积就OK了 AC代码: #include&amp;lt;iostream&amp;gt; #include&amp;lt;cstring&amp;gt; using namespace std; i...

Stark_industry 303

YOLO 线性小目标涨点|3890 张输电导线散股 VOC+YOLO 单类别数据集实战,无人机电力缺陷巡检全流程落地

架空输电导线是电网能量传输核心载体,长期受风力摆动、雷击、腐蚀、外力撞击作用,外层铝股极易出现断裂散股故障。导线散股初期仅少量铝丝开裂,肉眼与无人机远距离航拍下属于细长微弱线性小目标;若未及时发现,散股会持续扩张,引发导线过热、断线、大面积停电重大电力安全事故。传统人工巡检存在多重行业痛点:山区、跨江河线路人员无法攀爬登杆,高空作业人身坠落风险极高;无人机单次航拍产出数千张高清图片,人工逐帧筛查微小散股耗时 3-5 天,阴天、逆光、植被遮挡场景漏检率超 45;

lin_xiu的博客 52

HDU - 1505City Game【最大完全子矩阵】

City Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8570 Accepted Submission(s): 3727 Problem Description Bob is a strategy game progr...

qq_43966202的博客 194

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

hdu1505 City Game 最大子矩阵、动态规划

Problem Description Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees,fa...

一方 221

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU1505_City Game【最大完全子矩阵】

City Game 题目大意:给你一个M*N的区域。R代表被占用,F代表空闲。每块空闲 的区域价值3美金,求全部由空闲区域围成的矩形的价值 思路:1506的升级版。不同的是,1505是二维的。把2维转换为以每一 行为底,组成的最大面积就转换成了1506题。 参考1506题解题报告:http://blog.youkuaiyun.com/lianai911/article/details/40208265 其中h[i][j]表示第i行为底,第j列上方连续空闲位置的高度。 遍历计算出该点向左右两边延伸的左右边界,从而计算出

程序员充电站(itcharge) 3191

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最大全1子矩阵的两种解法(例题:City Game HDU - 1505)

以前牛客多校遇到过两道,都没做出来,这次来系统性的补习一下。 例题:City Game HDU - 1505 题意:给你一个矩阵,求最大全1子矩阵,最后结果乘以3。。。 全1矩阵可以参考下图 这个框就代表一个全1矩阵,且图中所示是一个极大全1矩阵(四条边都有0) 当然他也是一个最大全1矩阵。 做法一:单调栈+预处理 我们先把 01矩阵预处理,对于第 j 列,从第一行从头开始扫描至最后一行,得到...

weixin_43670649的博客 1116

hdu1505 City Game 最大完全子矩阵 模板题

City GameTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7857    Accepted Submission(s): 3422Problem DescriptionBob is a strategy game programmi...

popcjz的博客 219

HDU 1505 City Game-dp-(最大子矩阵模型)

题意:求最大的子矩阵 分析:直接用最大字矩阵的公式做超时了。换个思路,这题跟上一题1506有关系,先以每层为底算出每个元素能到达的最大的高度,然后就跟1506一样了。这里求高度和求面积两处地方用到了dp暂存数据。求高度用二重循环,然后每层为底求面积要二重循环加上外层就是三重循环,但是由于用了dp保存中间结果,所以这个三重循环不会超时。dp[j]表示当前层第j列能到达的最大的高度,状态转移:1.a

关于学习本身 947

hdu 1505 City Game(最大子矩阵)

Problem Description Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees,fa

HJ 642

hdu1505 City Game (最大子矩阵)

这题是HDU1506 的加强版,只要把算出以i 行为底能达到的最到的最大高度,再扫描每一行,就转化为 HDU1506 的问题了,即算出以此点为最低点能两边延伸的最大距离,最大延伸距离乘以该点的高度就是面积了,HDU 2870 则是此题的加强版 #include #include #include #include #include #include #include

Ezereal的博客 337

【BZOJ3039】玉蟾宫/【HDU1505】【POJ1964】City Game 最大01子矩阵

转载请注明出处: 首先我们可以用单调栈每行扫一遍,维护一个点向上下左右各能延伸多长。 当然,这是可以做的,也是很恶心的。 我们可以每行扫一遍,维护每个点当前的[列高度]时能向左向右的最大延伸距离。 当然,某个点可能降低一点高度,就会更宽,结果更优,但是显然既然存在这种结果,那么其它列一定可以代劳。 呃。所以每行扫一遍,然后记录这行每个节点以最大高度能向左向右延伸的最大距离

辗转山河弋流歌 2229

HDU - 1505 City Game(最大子矩阵)

点击打开题目链接 City Game Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7541Accepted Submission(s): 3262 Problem Description Bo

Chook_lxk的博客 616

hdu 1505 City Game 简单DP 最大子矩阵 迭代法

hdu 1506 加强版    题解:点我 只不过在1506的基础上套了一重循环。 City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6059    Accepted Submission(s):

便纵有千种风情 443

暑期dp46道(9)——HDU 1505City Game 求最大子矩阵面积

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 可参考本人dp46道(8)的部分思路 这题是1506的变形,但是我个人觉得这个是比1505简单的,因为觉得思路更为清晰: (一)读入数据并记录h[i][j](这里用一个字符串s读入,对s[0]判断处理h[i][j]); (二)扫描枚举,求(i,j)的l[i][j]和r[i][j]

退役ACMer 677

hdu 1505 City Game(0和1 中的最大子矩阵)

City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3834    Accepted Submission(s): 1588 Problem Description Bob is a strateg

Jinx Jinx again 2132
上一篇: Uva1395 Slim Span(最小生成树)
下一篇: 158B Taxi 贪心
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值