BZOJ 1657 [Usaco2006 Mar]Mooo 奶牛的歌声:单调栈【高度序列】
2024-08-28 05:59:40
题目链接: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();
}
最新文章
- Wix打包技术学习笔记
- SQLPROMPT5.3对各种加密对象的解密测试
- JS省市区三级联动
- “我是谁?”-管理者的角色、职责与工作思路.ppt
- 手把手教你接口自动化测试 – SoapUI &; Groovy
- hdoj 5399 Tpp simple
- Excel动态生成JSON
- Select模型原理
- input file 模拟预览图片。
- php随笔1-php图片处理
- #308 (div.2) A. Vanya and Table
- 【剑指offer】面试题24:二叉搜索树的兴许前序遍历序列
- Lua C/C++互相调用
- c# 结构的使用
- Codechef STREDUC Reduce string Trie、bitset、区间DP
- rhadoop linear regression 问题
- Xamarin.Forms.Xaml.XamlParseException: MarkupExtension not found for trans:Translate using a PCL in Release Mode
- Eclipse C++的配置问题launch failed binary not found
- Oracle高级查询之CONNECT BY
- Jquery-plugins-toastr-消息提示
热门文章
- AAuto无法关闭CMD窗口怎么办
- 负载均衡情况下获取真实ip的方法
- props default 数组(Array)/对象(Object)的默认值应当由一个工厂函数返回
- WebService中获取request对象一例
- layui.layer独立组件--解释
- RF ---library
- [读书笔记] learn python the hard way书中 有关powershell 的一些小问题
- 命令行高效操作Git,看这篇就够了
- 看完这篇再不会 View 的动画框架,我跪搓衣板
- CentOS 6.9上安装Mysql 5.7.18 安装