【问题描述】
最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N个建筑。
afy决定在上面找一块尽可能大的矩形放置广告牌。我们假设每个建筑物都有一个高度,
从左到右给出每个建筑物的高度H1,H2…HN,且0<Hi<=1,000,000,000,并且我们假设每个建筑物的宽度均为1。

要求输出广告牌的最大面积。

【输入文件】
输入文件 ad.in 中的第一行是一个数n (n<= 400,000)
第二行是n个数,分别表示每个建筑物高度H1,H2…HN,且0<Hi<=1,000,000,000。
【输出文件】
输出文件 ad.out 中一共有一行,表示广告牌的最大面积。
【输入样例】
6
5 8 4 4 8 4
【输出样例】

24

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>using namespace std;
#define maxn 400000 + 10int L[maxn], R[maxn];
int pos[maxn];
int a[maxn];
int n;void get_left()
{int head = 1, tail = 0;for(int i = 1; i <= n; i++){while(head <= tail && a[pos[tail]] >= a[i])tail--;L[i] = i - pos[tail] - 1;pos[++tail] = i;}
}void get_right()
{int head = 1, tail = 0;pos[tail] = n + 1;for(int i = n; i >= 1; i--){while(head <= tail && a[pos[tail]] >= a[i])tail--;R[i] = pos[tail] - i - 1;pos[++tail] = i;}
}int main()
{while(~scanf("%d", &n)){memset(L, 0, sizeof L);memset(R, 0, sizeof R);for(int i = 1; i <= n; i++)scanf("%d", a + i);get_left();get_right();long long  ans = -1;for(int i = 1; i <= n; i++)ans = max(ans, ((long long)L[i] + R[i] + 1) * a[i]);printf("%I64d\n", ans);}return 0;
}/*6
5 8 4 4 8 4*/

单调队列水题 刷广告相关推荐

  1. hdu3415 单调队列模板题

    比较裸的单调队列 先求前缀和,枚举所有结束位置1~n+k即可 #include<iostream> #include<cstdio> #include<cstring&g ...

  2. POJ2823 滑动窗口 单调队列模板题 第一次用了发函数指针

    题意 有一个n长的序列,用k长的窗口在上面滑动,去每次窗口中最小和最大的数. 思路 使用单调队列,维护这个队列是单调的.以取最小元素为例,若窗口内左边元素>=右边元素,则左边元素失去保留的意义, ...

  3. 闲来无事刷水题、简单博弈论专题、sg函数、洛谷

    记 今天闲来无事,不想刷codeforces了,到洛谷提高组训练营找几道水题刷着玩玩(虽然自己早已过了打OI的年纪)- 简单博弈论专题 P1199 三国游戏 这么考虑,由于电脑总是不能让我搭配出当前能 ...

  4. 365天挑战LeetCode1000题——Day 124 单调队列模板

    单调队列模板 class MaxQueue {private:queue<int> origin;deque<int> dq; public:MaxQueue() {}int ...

  5. c语言题-牛牛做水题

    牛牛喜欢做题.但他不喜欢做难题,喜欢做水题. 对于一个题号为的题而言,题目的难度为的所有因子之和除以.牛牛认为难度小于2的题目都是水题. 例如: 编号为25的题目,其难度为(1+5+25)/25=1. ...

  6. hdu 3706 Second My Problem First 单调队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3706 Second My Problem First Time Limit: 12000/4000 M ...

  7. 【P1714】切蛋糕(单调队列)

    实在不明白难度等级,难不成前缀和是个很变态的东西? 说白了就是单调队列裸题,都没加什么别的东西,就是一个前缀和的计算,然而这个题也不是要用它优化,而是必须这么做啊. #include<iostr ...

  8. 单调队列————[USACO09MAR]向右看齐Look Up

    先了解一下单调队列: 很明显的具有单调性 分为单调递增和单调递减两种,简单点讲就是维护队头为最大值或者为最小值 (建议采用双向队列  比较好写) 具体步骤:(这个是单调递减) 如果队列非空且当前值比队 ...

  9. [NOI2005]瑰丽华尔兹 动态规划 + 单调队列

    Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意?众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道,世界上最伟大的钢琴家一生都漂泊在 ...

最新文章

  1. prototype.js 1.4版开发者手册
  2. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)【完结】
  3. 上届作品回顾丨如何在 Innovation 2021 开发者大赛中脱颖而出?
  4. SpringBoot 配置多数据源
  5. 十三、Vuex学习笔记
  6. oracle表空间如何压缩,Oracle里表空间的压缩
  7. Unity3D调用摄像头显示当前拍摄画面
  8. Python基础——positional argument vs keyword argument
  9. window下python2和python3的共存
  10. 易语言在线播放器源码php,易语言写出自绘播放器列表
  11. mysql 怎么加读锁_MYSQL—加写锁,加读锁,解锁
  12. 2-16-树状关系模式
  13. C语言之volatile
  14. 波士顿大学计算机工程硕士,波士顿大学电气与计算机工程理学硕士
  15. koolcenter官改固件软件中心无法离线安装插件
  16. GPS北斗共视授时中的多径效应分析
  17. OPENWRT交叉编译之神州数码校园客户端实践
  18. twemproxy安装记录
  19. UPC——训练赛 :卡片
  20. 收集的颜文字,呵呵哒

热门文章

  1. 数据中台(七) 数据中台架构
  2. Windows10系统goland代码跳转ctrl + alt +←或→箭头快捷键无效
  3. Verilog 综合练习 电子钟的实现
  4. 计算机运行速度和科学研究,()的计算机运算速度可达到一太次以上,主要用于国家高科技领域与工程计算和尖端技术研究。...
  5. 天天学JAVA-JAVA基础(2)
  6. kazam录制视频在windows下无法播放解决办法
  7. 电子合同的一个“安全漏洞”
  8. 用html+css做一个网页设计
  9. 一万块人民币钱做本钱,如何在一年内合法赚一亿元?
  10. 《天天数学》连载60:二月二十九日