题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1657

题意:

  Farmer John的N(1<=N<=50,000)头奶牛整齐地站成一列“嚎叫”。

  每头奶牛有一个确定的高度h(1<=h<=2000000000),叫的音量为v (1<=v<=10000)。

  每头奶牛的叫声向两端传播,但在每个方向都只会被身高严格大于它的最近的一头奶牛听到,所以每个叫声都只会被0,1,2头奶牛听到(这取决于它的两边有没有比它高的奶牛)。

  一头奶牛听到的总音量为它听到的所有音量之和。

  自从一些奶牛遭受巨大的音量之后,Farmer John打算买一个耳罩给被残害得最厉害的奶牛,请你帮他计算最大的总音量。

题解:

  单调栈。

  单调性:

    对于每一个位置,要找到它左边(或右边)第一个比它大的元素。

    所以从栈顶到栈底,高度依次递增。(因为如果出现下降的元素,肯定是没有用的)

  所以分别从左到右和从右到左,做两次单调栈就好了,最后统计最大的答案。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#define MAX_N 50005 using namespace std; int n;
int ans=;
int h[MAX_N];
int v[MAX_N];
int tot[MAX_N];
stack<int> stk; void read()
{
cin>>n;
for(int i=;i<n;i++)
{
cin>>h[i]>>v[i];
}
} void solve()
{
memset(tot,,sizeof(tot));
for(int i=;i<n;i++)
{
while(!stk.empty() && h[stk.top()]<=h[i]) stk.pop();
if(!stk.empty()) tot[stk.top()]+=v[i];
stk.push(i);
}
while(!stk.empty()) stk.pop();
for(int i=n-;i>=;i--)
{
while(!stk.empty() && h[stk.top()]<=h[i]) stk.pop();
if(!stk.empty()) tot[stk.top()]+=v[i];
stk.push(i);
}
for(int i=;i<n;i++)
{
ans=max(ans,tot[i]);
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

最新文章

  1. Wix打包技术学习笔记
  2. SQLPROMPT5.3对各种加密对象的解密测试
  3. JS省市区三级联动
  4. “我是谁?”-管理者的角色、职责与工作思路.ppt
  5. 手把手教你接口自动化测试 – SoapUI &amp; Groovy
  6. hdoj 5399 Tpp simple
  7. Excel动态生成JSON
  8. Select模型原理
  9. input file 模拟预览图片。
  10. php随笔1-php图片处理
  11. #308 (div.2) A. Vanya and Table
  12. 【剑指offer】面试题24:二叉搜索树的兴许前序遍历序列
  13. Lua C/C++互相调用
  14. c# 结构的使用
  15. Codechef STREDUC Reduce string Trie、bitset、区间DP
  16. rhadoop linear regression 问题
  17. Xamarin.Forms.Xaml.XamlParseException: MarkupExtension not found for trans:Translate using a PCL in Release Mode
  18. Eclipse C++的配置问题launch failed binary not found
  19. Oracle高级查询之CONNECT BY
  20. Jquery-plugins-toastr-消息提示

热门文章

  1. AAuto无法关闭CMD窗口怎么办
  2. 负载均衡情况下获取真实ip的方法
  3. props default 数组(Array)/对象(Object)的默认值应当由一个工厂函数返回
  4. WebService中获取request对象一例
  5. layui.layer独立组件--解释
  6. RF ---library
  7. [读书笔记] learn python the hard way书中 有关powershell 的一些小问题
  8. 命令行高效操作Git,看这篇就够了
  9. 看完这篇再不会 View 的动画框架,我跪搓衣板
  10. CentOS 6.9上安装Mysql 5.7.18 安装