Mooo 单调队列求解
来源:互联网 发布:电器用瓷瓶数据 编辑:程序博客网 时间:2024/05/17 08:09
题目描述:
有 N 个能量发射站排成一行,每个发射站i都有不相同的高度 Hi,并能向两边(当然两端的只能向一边)同时发射能量值为 Vi 的能量,并且发出的能量只被两边最近的且比它高的发射站接收。
显然每个发射站发来的能量有可能被0 或 1 或 2 个其它发射站接收,特别是为了安全,它受到的能量总和是我们很关心的。由于数据很多,请你帮助我们计算出接受了最多能量的发射站接受的能量是多少。
数据范围
1 <= N <= 50,000
1 <= hi <= 2,000,000,000
1 <= vi <= 10,000
输入文件(mooo.in):
第1行: 一个整数 N
第2..N+1行:第 i+1 行有2个整数 Hi Vi,表示第i个发射站的高和发射的能量值。
输出文件(mooo.out):
一行:一个发射站接收到的最大能量值。
输入
3 4 2 3 5 6 10
输出
7
题目就是在数列{an}中,对于每一个a[i],他的左边和右边第一个大于他的位置加上i位置所释放的能量。
如果用朴素的算法,对于a[i],向左和向右分别枚举,最坏情况下是O(n^2)。所以不能拿满分。
现在引入单调队列(至于关于单调队列的具体内容,可以到百科上查一查。)。
单调队列的本质就是维护一个队列,这个队列始终是有序的(升序,降序...)。本题维护的是一个升序队列,每次元素i入队的时候,从尾往前找到第一个大于他的数n,插入在其后面,而原来在其后面的所有元素就丢弃了。所以n是i满足条件的左端。当i被后面的元素m遮挡的时候,m就是i的右端了。
- Mooo 单调队列求解
- bzoj1657 Mooo(单调栈)
- Mooo
- POJ - 2823 Sliding Window (单调队列求解区间最值)
- HDU 5749 Colmerauer(单调栈或单调队列求解固定区间最大或最小值)
- [BZOJ1657][Usaco2006 Mar]Mooo 奶牛的歌声(单调栈)
- [BZOJ1657][Usaco2006 Mar]Mooo 奶牛的歌声(单调栈)
- [BZOJ 1657][Usaco2006 Mar]Mooo 奶牛的歌声:单调栈
- [bzoj1657][Usaco2006 Mar]Mooo 奶牛的歌声(单调栈)
- 单调栈 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- V8 JavaScript Engine 入门指南 2 -- Hello World
- 图像处理中频域(Fourier)的应用总结
- 大事与小事,抛弃无意义的事,坚持自己的事
- 标签显示值的格式化处理
- 递归实现判断一个数是否是回文数
- Mooo 单调队列求解
- 面试常见12种高级错误
- static 和 const的解释
- JSTL标签库数字,日期格式化
- 第一个涉及到信号木曹的例子,quit
- 关于结构体的一般初使化
- 面试总结--递归
- firebug命令
- DEBUG笔记一