统计表类图形的最大面积

news/2025/11/1 11:15:04/文章来源:https://www.cnblogs.com/Dlyim/p/19182018

统计表类图形的最大面积

B4273 [蓝桥杯青少年组省赛 2023] 最大的矩形纸片 - 洛谷

问题概述

image

对于这样一个图,求它围成的矩形的最大面积

定义每一条矩形为一个图形

有这么一个思路:枚举每一个图形,以它的高作为围成矩形的高,那么问题就转换为求围成的矩形的边长。

设当前图形为第$i$个,现在向右推到第$j$个图形,第$k$个图形的高度为$h_k$

显然,只要$j$的高度大于等于$i$的高度,那么它一定能延伸到$j$,否则一定不能延伸到

那么问题再次变化,变为对于每一个$i$找到最近的$j$,使$h_i>h_j$。显然可以用单调栈维护。

这样又能延伸出两个小分支做法

1. 单向维护高度和长度

维护一个高度单调递增的栈,记录两个信息:高度累计宽度

我们不妨考虑一种情况:

设当前图形为第$i$个,现在向右推到第$j$个图形

如果此时$h_i>h_j$,那就意味着第$i$个图形无法向右扩展到第$j$个。但是反过来想,它意味着第$j$个图形向左扩展可以扩展到第$i$个位置。按照反向的思考,那么第$i$个位置向左扩展也一定是扩展到一个比它高的位置,那么这个位置,第$j$个位置也一定能扩展到。因此我们可以得出:第$i$个图形所能扩展的所有位置,第$j$个图形都能扩展到。同时第$j$个图形能在第$i$个图形的基础上再扩展$1$个(自身)

因此我们可以得出做法:在弹出栈顶时,更新当前长度并更新答案。入栈时,进入两个元素,该位置的高该位置的累计长度

计算面积

只在弹出栈顶时计算面积

此时知道:高度 = 栈顶高度,宽度 = 累计宽度

Code
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll N=1e6+10;
ll n,ans;
ll h[N];
struct node{ll w,h;
};
stack<node> q;
int main(){scanf("%lld",&n);for(ll i=1;i<=n;i++) scanf("%lld",&h[i]);ll len,res;for(int i=1;i<=n+1;i++){len=0;while(q.size()&&h[i]<=q.top().h){len+=q.top().w;res=len*q.top().h;ans=max(ans,res);q.pop();}q.push((node){len+1,h[i]});}printf("%lld",ans);return 0;
}

注:
对于每一个$i$,要使它的宽度初始化为$0$

循环一定要开到$n+1$,不然最后站内残留的图形不会被计算面积

2. 双向维护下标

这就跟普通的单调栈维护求每个数左边和右边第一个小于它的数在哪一样了

设两个数组,分别求向左和向右。这样该段的高就是$h_i$,宽度为$r_i-l_i+1$,求最值即可

Code
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll N=1e6+10;
ll n,ans;
ll h[N];
stack<ll> q;
ll r[N],l[N];
int main(){scanf("%lld",&n);for(ll i=1;i<=n;i++) scanf("%lld",&h[i]);for(ll i=n;i>=1;i--){while(q.size()&&h[i]<=h[q.top()]) q.pop();if(q.empty()) r[i]=n+1;else r[i]=q.top();q.push(i);}while(q.size()) q.pop();for(ll i=1;i<=n;i++){while(q.size()&&h[i]<=h[q.top()]) q.pop();if(q.empty()) l[i]=0;else l[i]=q.top();q.push(i);}ll len,res;for(ll i=1;i<=n;i++){len=r[i]-l[i]-1;res=len*h[i];ans=max(ans,res);}printf("%lld",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一对一视频源码,提高可扩展性的常用设计模式 - 云豹科技

一对一视频源码,提高可扩展性的常用设计模式提高可扩展性的目的1、面对需求变更,方便需求更改2、减少代码修改的难度什么是好的扩展1、需求的变更,不需要重写2、代码修改不会引起大规模变动3、方便加入新模块提高可…

20251101 之所思 - 人生如梦

20251101 之所思1. 最近公司工具链的切换很多,EA切换到Catia,Core-ALM切换到CodeBeamer,还要部署AI工具BBrainy,以往的我都是一个邮件给到大家让大家自觉去部署和切换,但是很多时候没有达到自己的预期,原因是很少…

深度学习基础理论————常见评价指标以及Loss Function - Big-Yellow

评价指标 准确率/精确率/召回率Positive (预测到的正例) Negative (预测到的反例)True (预测结果为真) TP TNFalse (预测结果为假) FP FN争对正案例的计算: 1、准确率计算方式(ACC):\(Acc= \frac{TP+TN}{TP+TN+FP+…

模型量化操作————GPTQ和AWQ量化 - Big-Yellow

From:https://www.big-yellow-j.top/posts/2025/10/11/Quantized.html 模型量化技术 简单了解几个概念: 量化:是一种模型压缩的常见方法,将模型权重从高精度(如FP16或FP32)量化为低比特位(如INT8、INT4)。常见…

faust分组ui功能

faust分组ui功能hgroup("label",x)hgroup Primitive The hgroup primitive implements a horizontal group. A group contains other UI elements that can also be groups. hgroup is not a signal process…

CSP-S前集训总结

2025-10-16 战绩:100+100+65+0,总榜并列 rk1。 A.小Z爱计数 简单贪心,按时间排序。对于相邻两个限制,要么直接走去,要么有归零。判断一下就行了。 时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> us…

在AI技术快速实现创意的时代,挖掘用户真实需求成为关键突破点——某知名舆情分析系统需求洞察

本文通过对某知名舆情分析系统的功能特性和用户反馈进行深入分析,揭示了在AI技术日益成熟的背景下,用户对系统性能、使用体验和功能完善度的真实需求,为产品优化提供了明确方向。a.内容描述核心功能定位:该系统是一…

ICPC注意事项

VP 血的教训,下次不要当战犯了。每次都要取模 1e18+10->(long long)1e18 +10

时序数据库-InfluxDB - LLj

一、介绍 InfluxDB是一种时序数据库,时序数据库全程时间序列数据库(Time Series Database,TSDB,用于存储大量基于时间的数据,时序数据(Time Series Data)指的是一系列基于时间的数据,为处理和分析带有时间戳的…

2025年质量好的航空充气密封圈厂家最新推荐排行榜

2025年质量好的航空充气密封圈厂家最新推荐排行榜 航空充气密封圈作为飞行器、地面保障设备及特种装备的核心部件,其性能直接影响安全性与可靠性。随着国产航空产业链的升级,具备高耐候性、抗压性和长寿命的密封圈需…

2025年质量好的非开挖电力管用户好评厂家排行

2025年质量好的非开挖电力管用户好评厂家排行 非开挖电力管作为现代电力工程中的重要材料,广泛应用于城市电网改造、通信工程、农田灌溉等领域。其优势在于施工便捷、环保高效,能够减少对地面的破坏,降低施工成本。…

2025年口碑好的酚醛胶行业内口碑厂家排行榜

2025年口碑好的酚醛胶行业内口碑厂家排行榜 酚醛胶作为一种高性能粘合剂,广泛应用于木材加工、建筑、汽车、电子等领域。随着市场需求的不断增长,酚醛胶行业涌现出一批技术领先、品质卓越的企业。本文根据产品质量、…

基于Java+Springboot+Vue开发的大学生反诈视频宣传系统源码+运行步骤

项目简介该项目是基于Java+Springboot+Vue开发的反诈视频宣传系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过…

Docker 部署 openEuler 教程及常见问题解决

openEuler 作为华为主导的开源 Linux 发行版,以“多架构适配、云原生友好、长期稳定支持”为核心优势,在企业级服务器、边缘计算、云原生场景中应用广泛。通过 Docker 部署 openEuler,能将其系统优势与容器化的“环…

2025年评价高的高铁桥梁垫块厂家最新权威推荐排行榜

2025年评价高的高铁桥梁垫块厂家最新权威推荐排行榜 高铁桥梁垫块作为高铁建设中的关键部件,其质量直接关系到桥梁的安全性和耐久性。随着我国高铁网络的不断扩展,市场对高强度、高精度桥梁垫块的需求持续增长。202…

图中连通区域集合的获取

std::vector<std::vector<int>> getCompGroups(const std::vector<std::vector<int>>& adj) {int n = adj.size();std::vector<char> vis(n, 0);std::vector<std::vector<int…

2025年专业的电加热管厂家最新权威推荐排行榜

2025年专业的电加热管厂家最新权威推荐排行榜 在工业制造、家用电器、新能源等领域,电加热管作为核心热传导元件,其性能与可靠性直接影响设备寿命和能效。随着技术进步和市场需求升级,具备高精度、耐腐蚀、防爆特性…

2025年热门的碳化蒸笼用户好评厂家排行

2025年热门的碳化蒸笼用户好评厂家排行 随着健康饮食理念的普及,碳化蒸笼因其天然环保、耐高温、防霉防蛀等优势,成为现代厨房的优选。2025年,碳化蒸笼市场涌现出一批以品质和创新著称的厂家,本文基于用户真实反馈…

2025年靠谱的给水管设备厂家推荐及选购指南

2025年靠谱的给水管设备厂家推荐及选购指南 在建筑、市政工程、农业灌溉等领域,给水管设备的质量直接关系到供水系统的安全性和使用寿命。选择一家技术先进、产品可靠的给水管设备厂家至关重要。2025年,随着新材料和…

2025年优质的仪器计量校准厂家推荐及采购参考

2025年优质的仪器计量校准厂家推荐及采购参考 在工业生产、科研实验和质量控制领域,仪器计量校准的准确性直接影响产品质量和检测数据的可靠性。选择一家专业、权威的计量校准服务商至关重要。2025年,市场上涌现出众…