qduoj LC的课后辅导(单调栈)
LC的课后辅导
发布时间: 2015年9月19日 21:42 时间限制: 1000ms 内存限制: 256M
有一天,LC给我们出了一道题,如图:
这个图形从左到右由若干个 宽为1 高不确定 的小矩形构成,求出这个图形所包含的最大矩形面积。
多组测试数据
每组测试数据的第一行为n(0 <= n <= 100), 表示图形有n个小矩形构成
接下来一行输入n个整数h1, h2...hn(0 <= hi <= 1000), 表示每个小矩形的高度
n为0时程序结束
仅输出一行表示面积的最大值
7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0
8 4000
遍历每一个点,确定出该点可以延伸到的端点,就确定了矩形的底,再乘以该点的值就是面积
#include<stack>
#include<cstdio>
#include<climits>
using namespace std;
const int M = 105;
int a[M];
int L[M];
int R[M];
stack<int> st;
int main()
{int n;while(~scanf("%d", &n)&&n){for(int i=1;i<=n;i++){scanf("%d", &a[i]);}while(st.size())st.pop();for(int i=1;i<=n;i++)//确定左端点{while(!st.empty()&&a[st.top()]>=a[i])st.pop();if(st.empty())L[i] = 1;elseL[i] = st.top() + 1;st.push(i);}while(st.size())st.pop();for(int i=n;i>0;i--)//确定右端点{while(!st.empty()&&a[st.top()]>=a[i])st.pop();if(st.empty())R[i] = n;elseR[i] = st.top() - 1;st.push(i);}int ans=INT_MIN,tmp;for(int i=1;i<=n;i++){tmp = (R[i] - L[i] + 1)*a[i];ans = max(ans, tmp);}printf("%d\n", ans);}return 0;
}
qduoj LC的课后辅导(单调栈)相关推荐
- QDUOJ LC的课后辅导 单调递增栈
LC的课后辅导 发布时间: 2015年9月19日 21:42 时间限制: 1000ms 内存限制: 256M 描述 有一天,LC给我们出了一道题,如图: 这个图形从左到右由若干个 宽为1 高不 ...
- qduoj LC的课后辅导
LC的课后辅导 发布时间: 2015年9月19日 21:42 时间限制: 1000ms 内存限制: 256M 描述 有一天,LC给我们出了一道题,如图: 这个图形从左到右由若干个 宽为1 高不 ...
- LC的课后辅导 QDU
点击打开链接 此题暴力可过(O(n^2)) 亦可用栈优化(O(n)) 即通过栈保存矩形编号 找出每个矩形左右可到达的最远边界 例如从左至右遍历 遍历至哪个矩形 该矩形的左边界即可得 假设遍历至h[i] ...
- BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
https://www.lydsy.com/JudgeOnline/problem.php?id=4826 年少不知空间贵,相顾mle空流泪. 和上一道主席树求的东西差不多,求两种对 1. max(a ...
- 青春野狼不做姐控偶像的梦 - 线段树 - 扫描线 - 单调栈
题目大意:给你一个排列,多次询问,每次给你一个区间,问有多少子区间,数字取出来sort一遍是连续的一段. 题解: 考虑l=1,r=n咋做. 考虑一段合法,当且仅当max-min=r-l. 那么用个单调 ...
- 算法学习 (门徒计划)4-2 单调栈(Monotone-Stack)及经典问题 学习笔记
算法学习 (门徒计划)4-2 单调栈(Monotone-Stack)及经典问题 学习笔记 前言 单调栈 基础 性质 代码实现 总结 经典例题 LeetCode 155. 最小栈 (基础) 解题思路 L ...
- [附源码]计算机毕业设计Python+uniapp课后辅导管理微信小程序n8184(程序+lw+远程部署)
[附源码]计算机毕业设计Python+uniapp课后辅导管理微信小程序n8184(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyth ...
- POJ2796 Feel Good(单调栈)
题意: 给出一列数据,要求一个区间内最小值与区间内数据总和乘积最大值 要点: 还是单调栈,这次我自己写的,先做了几题比较简单的果然还是有效果的,这题也是一样,按点遍历,网上大神做的是直接遍历一次即可, ...
- 【单调栈 前缀和 异或】7.21序列求和
还要再细细思考的奇妙思路 题目描述 小A最近喜欢上了关于区间max的问题.她定义一个区间的价值是max(ai)(l<=i<=r)∗(alxoral+1xor...xorar)max(ai) ...
最新文章
- java hashset应用_三.java集合的应用
- XenDesktop7-基于SCVMM2012SP1的部署
- HTML5语义化的理解
- php源码编程,10个小技巧让你做好php源码编程
- mpvue开发小程序分享朋友圈无法自定义标题解决方法
- OceanBase在蚂蚁金服的智能运维实践之路
- mysql性能仪表盘_mysql-笔记-性能
- python计算密集型任务_Python多进程和多线程测试比高低,只为证明谁是最快的“仔”
- java aop设计_Spring4.x基础配置(三):Spring AOP
- python蚁群算法可视化_蚁群算法原理及其实现(python)
- C++ template 学习归纳总结4
- 「解决方案」5G基站电气监控云平台
- 解决NBSI安装显示“MSINET.OCX组件无法加载或其中有组件失败”
- win10支持8t 硬盘_WIN8.1/ WIN10磁盘分区详解
- Jetpack 系列之AppSearch
- Linux 自检和 SystemTap
- Word/Excel文档操作API哪家强?一张表带你了解Aspose和Spire系列全功能对比
- matlab的title太长,如何换行?
- 洛谷P4408 [NOI2003]逃学的小孩
- 打造数字生活新体验,华为终端云服务在盘算什么?
热门文章
- Buuctf-[GXYCTF2019]BabyUpload
- 100天精通Python(可视化篇)——第83天:matplotlib绘制不同种类炫酷箱形图参数说明+代码实战(水平、缺口、群组、堆叠、核密度、小提琴箱形图)
- Python itertools模块
- Java IO体系结构图
- Windows下搭建MQTT服务器
- 【微信小程序】 解决“enablePullDownRefresh“: true下拉刷新还是不起作用
- 【软考学习2】数据表示——原码 反码 补码 移码
- Chapter3:机器人系统设计
- 在花千骨手游中快速获得勾玉的四种途径
- SpringMVC常见面试题总结(超详细回答)