国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

51Nod - 1102 單調(diào)棧

2019-11-14 11:47:06
字體:
供稿:網(wǎng)友

題意:

有一個(gè)正整數(shù)的數(shù)組,化為直方圖,求此直方圖包含的最大矩形面積。例如 2,1,5,6,2,3,對(duì)應(yīng)的直方圖如下:面積最大的矩形為5,6組成的寬度為2的矩形,面積為10。Input
第1行:1個(gè)數(shù)N,表示數(shù)組的長度(0 <= N <= 50000)第2 - N + 1行:數(shù)組元素A[i]。(1 <= A[i] <= 10^9)Output
輸出最大的矩形面積Input示例
6215623Output示例
10

思路:

單調(diào)棧的模板題,枚舉最低點(diǎn),然后找到左右的邊界。

代碼:

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 5e4 + 10;ll a[MAXN];int l[MAXN], r[MAXN];int main() {    int n;    scanf("%d", &n);    for (int i = 1; i <= n; i++)        scanf("%I64d", &a[i]);    stack <int> sta;    for (int i = 1; i <= n; i++) {        while (!sta.empty() && a[sta.top()] >= a[i]) sta.pop();        l[i] = sta.empty() ? 0 : sta.top();        sta.push(i);    }    while (!sta.empty()) sta.pop();    for (int i = n; i >= 1; i--) {        while (!sta.empty() && a[sta.top()] >= a[i]) sta.pop();        r[i] = sta.empty() ? n + 1 : sta.top();        sta.push(i);    }    ll ans = 0;    for (int i = 1; i <= n; i++)        ans = max(ans, (r[i] - l[i] - 1) * a[i]);    PRintf("%I64d/n", ans);    return 0;}
上一篇:struts2值棧分析

下一篇:國王的魔鏡

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南丹县| 临夏市| 明溪县| 夏邑县| 新邵县| 若羌县| 治多县| 冷水江市| 聂荣县| 丹阳市| 临高县| 双鸭山市| 思南县| 定日县| 黄大仙区| 宜都市| 潞西市| 永济市| 苏尼特左旗| 成安县| 晋城| 台江县| 通河县| 诸城市| 肇源县| 积石山| 罗江县| SHOW| 义乌市| 长顺县| 玛纳斯县| 石棉县| 仁怀市| 改则县| 涪陵区| 宁阳县| 桃园市| 普陀区| 荆门市| 西林县| 子长县|