当前位置: 首页 > news >正文

每日一题7.29

记录详情 - 洛谷 | 计算机科学教育新生态

题目描述

一张半边参差不齐的网格纸(网格边长均为 1),有一边是完整没有破损的。现要从中剪出一片面积最大的矩形纸片。

给定网格纸中完整边的长度 N(1≤N≤1000000),以及网格中每一列残存部分的高度(1≤ 高度 ≤10000),输出能够剪出的最大矩形纸片面积。

输入格式

第一行输入一个正整数 N(1≤N≤1000000),表示纸片完整边的长度。

第二行输入 N 个正整数(1≤ 正整数 ≤10000),表示每列格子残存部分的高度,两个正整数之间用一个空格隔开。

输出格式

输出一个正整数,表示能够剪出的最大矩形纸片面积。

输入输出样例

输入 #1复制

6
3 2 1 4 5 2

输出 #1复制

8

单调栈板子题,卡我好长时间。

#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{int n,mx=0;	cin >> n;vector<int> h(n+2),a;h[0]=h[n+1]=0;for (int i = 1; i <= n; i++)cin >> h[i];for (int i = 1; i <= n+1; i++){while (!a.empty() && h[a.back()] >= h[i]){int high=h[a.back()];	a.pop_back();int width=a.empty()?i-1:i-a.back()-1;mx=max(mx,high*width);}a.push_back(i);}cout << mx << endl;return 0;
}

最后找半天bug才知道我width判定错误了。我原本写的是这样子的

int high=h[a.back()];
int width=i-a.back();
mx=max(mx,high*width);
a.pop_back();

但是比如1,7,2,4,3;

出栈了之后的栈顶的右边才算这个大矩形的左边界,而不是小矩形的左边界

http://www.dtcms.com/a/304118.html

相关文章:

  • 当贝纯净版_海信ip811n海思mv320处理器安卓4.42及9.0主板优盘免拆刷机固件及教程
  • [Token]ALGM: 基于自适应局部-全局token合并的简单视觉Transformer用于高效语义分割, CVPR2024
  • 安卓逆向2-安卓刷机和获取root权限和安装LSPosed框架
  • 博物馆 VR 导览:图形渲染算法+智能讲解技术算法实现及优化
  • 想要批量提取视频背景音乐?FFmpeg 和转换器都安排上
  • 机器学习、深度学习与数据挖掘:三大技术领域的深度解析
  • centos7安装Docker
  • 机器学习、深度学习与数据挖掘:核心技术差异、应用场景与工程实践指南
  • Docker学习相关视频笔记(二)
  • Linux 系统启动与 GRUB2 核心操作指南
  • 7月29日星期二今日早报简报微语报早读
  • Ubuntu上开通Samba网络共享
  • Ubuntu22.04系统安装,Nvidia显卡驱动安装问题
  • RHCE综合项目:分布式LNMP私有博客服务部署
  • Ubuntu25.04轻量虚拟机Multipass使用Shell脚本自动创建并启动不同版本Ubuntu并复制文件
  • ubuntu22.04 安装 petalinux 2021.1
  • 【prompt】Lyra 提示词深度研究
  • Apache Ignite 关于 **负载均衡(Load Balancing)** 的详细介绍
  • 信创国产Linux操作系统汇总:从桌面到服务器,百花齐放
  • RAG面试内容整理-8. 文档分块策略(滑动窗口、语义切分)
  • pycharm自己的包导入不进去解决方案
  • 博途SCL: Input、Output、Static、Temp、Constant、InOut 的详细介绍及案例
  • TCMalloc 内存分配原理简析
  • QFutureWatcher 收不到 finished 信号-QFutureWatcher 与对象生命周期
  • 小白学OpenCV系列1-图像处理基本操作
  • Vue2 vs Vue3:核心差异与升级亮点
  • Django自带的加密算法
  • .NET Core 3.1 升级到 .NET 8
  • 如何编写部署和支持需求---SRS软件需求规格指南系列
  • .NET 10 中的新增功能系列文章1——运行时中的新增功能