POJ 2559 Largest Rectangle in a Histogram(单调栈)
来源:互联网 发布:linux修改ip配置文件 编辑:程序博客网 时间:2024/05/16 17:40
题目链接:点击打开链接
题意:从左到右排列有多个矩形,这些矩形的宽度都为1,长度不等。选择连续的一至多个矩形,使得到的面积最大,但不能超出原有矩形的范围。
思路:单调栈入门题目,维护一个由栈顶到栈底单调递减(指矩阵高度)的矩阵序列。新矩阵入栈时,若高度大于栈顶矩阵的高度,直接入栈;否则,先更新栈内矩阵,再入栈,具体更新过程为:先取栈顶元素,然后每次从栈顶取一个矩阵,与之前的矩阵进行合并,更新合并矩阵的宽度和高度,同时更新最大面积,直到当前栈顶矩阵的高度小于要入栈的矩阵高度或者栈空。最后栈为一个单调栈,再进行更新,具体更新过程同上,直到栈为空。
// POJ 2559 Largest Rectangle in a Histogram 运行/限制:204ms/1000ms#include <cstdio>#include <cstring>#include <stack>#include <algorithm>#include <iostream>using namespace std;struct node {long long width, height;node(long long a,long long b):width(a),height(b){}};stack<node> s;int main(){int n;long long he, wi;//中间过程的高度,宽度long long re;//最大面积while (scanf("%d", &n) != EOF && n) {re = 0;while (!s.empty()) {//先清空栈s.pop();}for (int i = 0; i < n; i++) {//依次读取n个矩阵scanf("%I64d", &he);wi = 0;while (!s.empty() && he <= s.top().height) {//新矩阵高度不大于栈顶元素高度,先更新栈内元素node te = s.top();s.pop();wi += te.width;re = max(re, te.height*wi);}s.push(node(wi + 1, he));}wi = 0;while (!s.empty()) {node te = s.top();s.pop();wi += te.width;re = max(re, te.height*wi);}printf("%I64d\n", re);} return 0;}
阅读全文
1 0
- POJ 2559 -- Largest Rectangle in a Histogram ( 单调栈 )
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- 【POJ 2559】Largest Rectangle in a Histogram(单调栈)
- POJ 2559 Largest Rectangle in a Histogram (单调栈)
- POJ 2559 - Largest Rectangle in a Histogram(单调栈)
- Poj 2559 Largest Rectangle in a Histogram(单调栈)
- poj 2559 Largest Rectangle in a Histogram(单调栈)
- poj 2559 Largest Rectangle in a Histogram(单调栈)
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- 【单调栈】POJ-2559 Largest Rectangle in a Histogram
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- POJ 2559 Largest Rectangle in a Histogram RMQ || 单调栈
- POJ - 2559 Largest Rectangle in a Histogram 单调栈
- 【单调栈】POJ 2559 Largest Rectangle in a Histogram
- POJ-2559-Largest Rectangle in a Histogram-单调栈
- poj 2559 Largest Rectangle in a Histogram(单调栈)
- poj--2559 Largest Rectangle in a Histogram(单调栈)
- Java数据结构与算法解析(六)——AVL树
- WPF深入浅出之我见
- java中继承的初始化顺序
- oracle11g 监听日志过大处理
- Sftp只允许用户访问指定的目录
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
- iOS之《Effective Objective-C 2.0》读书笔记(48)
- Spark 集群搭建从零开始之2 Spark单机伪分布式安装与配置
- phpcmsv9调用友情链接
- android GPS API
- [tensorflow]tensorflow ConfigProto
- 使用 jquery 获取一组或者单个 checkbox 的选中状态的值
- NAT详解
- 设计模式六大原则(3):依赖倒置原则