hdu 1506 直方图内最大矩形
题目传送门//res tp hdu
单调栈的经典问题
维护区间的左右边界计算面积即可
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
typedef long long ll;
const int L = 100010;
ll H[L];
int n;
ll Maxrectangle(){
	ll ans = 0;
	stack<int>M;
	for(int k = 1;k<=n;){
		if(M.empty()||H[M.top()] <=H[k])
			M.push(k++);
		else{
			ll h = H[M.top()];M.pop();
			if(M.empty())
				ans = max(ans,(k-1)*h);
			else
				ans = max(ans,(k-M.top()-1)*h);
		}
	}
	while(!M.empty()){
		ll h = H[M.top()];M.pop();
		if(M.empty())
			ans = max(ans,n*h);
		else
			ans = max(ans,(n-M.top())*h);
	}
	return ans;
}
int main(){
	while(scanf(" %d",&n)!=EOF&&n){
		for(int i = 1;i<=n;++i) cin>>H[i];
		ll ans = Maxrectangle();
		cout<<ans<<endl;
	}
}
hdu 1506 直方图内最大矩形的更多相关文章
- HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)
		E - Largest Rectangle in a Histogram Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ... 
- HDU -1506  Largest Rectangle in a Histogram&&51nod 1158 全是1的最大子矩阵 (单调栈)
		单调栈和队列讲解:传送门 HDU -1506题意: 就是给你一些矩形的高度,让你统计由这些矩形构成的那个矩形面积最大 如上图所示,如果题目给出的全部是递增的,那么就可以用贪心来解决 从左向右依次让每一 ... 
- HDU 1506 Largest Rectangle in a Histogram set+二分
		Largest Rectangle in a Histogram Problem Description: A histogram is a polygon composed of a sequenc ... 
- hdu 1506 Largest Rectangle in a Histogram 构造
		题目链接:HDU - 1506 A histogram is a polygon composed of a sequence of rectangles aligned at a common ba ... 
- HDU - 1506 Largest Rectangle in a Histogram (单调栈/笛卡尔树)
		题意:求一个直方图中最大矩形的面积. 很经典的一道问题了吧,可以用单调栈分别求出每个柱子左右两边第一个比它低的柱子(也就相当于求出了和它相连的最后一个比它高的柱子),确定每个柱子的左右边界,每个柱子的 ... 
- hdoj - 1506 直方图中最大的矩形
		Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a commo ... 
- (连续的矩形)HDU - 1506
		题意:7 2 1 4 5 1 3 3 直接讲数据 :给出7个矩形的高,底长都为1,求最大的连通的矩形块的面积 思路:如果暴力的话肯定超时,有一个特别巧妙的预处理,如果我们知道每一个矩形的左右两边能延 ... 
- hdu 1506 单调栈问题
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 题目的意思其实就是要找到一个尽可能大的矩形来完全覆盖这个矩形下的所有柱子,只能覆盖柱子,不能留空 ... 
- HDU 1506 Largest Rectangle in a Histogram(区间DP)
		题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1506 题目: Largest Rectangle in a Histogram Time Limit: ... 
随机推荐
- 【转载】C++ STL priority_queue用法
			priority_queue 对于基本类型的使用方法相对简单.他的模板声明带有三个参数,priority_queue<Type, Container, Functional> Type 为 ... 
- 二维DFT
			学习DIP第4天 傅里叶变换数学原理会在后续完整介绍,目前只实现代码,观察下结果,公式在上一篇博客中已经描述 内容迁移至 http://www.face2ai.com/DIP-2-2-二维DFT/ h ... 
- codeforces555E
			Case of Computer Network CodeForces - 555E Andrewid the Android is a galaxy-known detective. Now he ... 
- [vbs]脚本启动
			Set ws = CreateObject("Wscript.Shell") ws.run "cmd.exe /c start tool.exe config_tence ... 
- CSS高级学习-1
			优先级 权值 标签权值为1,类权值为10,ID权值最高为100. p{color:red;} /*权值为1*/ p span{color:green;} /*权值为1+1=2*/ .warning{c ... 
- 20.包含min函数的栈 Java
			题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路 借助辅助栈实现: 压栈时:若辅助栈为空,则将节点压入辅助栈.否则,当当前节点小于 ... 
- Leetcode题目236.二叉树的最近公共祖先(中等)
			题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先 ... 
- 【软件工程】Beta冲刺(2/5)
			链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增修改用户信息.任务完成反馈等功能API 服务器后端部署,API接口的bet ... 
- ESXi 5.1 识别GPT问题
			使用paredUtil命令 partedUtil mklabel /dev/disks/eui.227c000155707e0b msdospartedUtil mklabel /dev/disks/ ... 
- P1439 【模板】最长公共子序列  LCS
			P1439 [模板]最长公共子序列 题解 1.RE的暴力DP O(n2) 我们设dp[i][j]表示,S串的第i个前缀和T串的第j个前缀的最长公共子序列. ◦ 分情况: ◦ ... 
