bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】
2024-08-26 14:53:20
先考虑只能往一边传播,最后正反两边就行
一向右传播为例,一头牛能听到的嚎叫是他左边的牛中与高度严格小于他并且和他之间没有更高的牛,用单调递减的栈维护即可
#include<iostream>
#include<cstdio>
using namespace std;
const int N=50005;
int n,a[N],v[N],p[N],q[N],s[N],top,ans;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
a[i]=read(),v[i]=read();
for(int i=1;i<=n;i++)
{
while(top&&a[i]>a[s[top]])
p[i]+=v[s[top--]];
s[++top]=i;
}
top=0;
for(int i=n;i>=1;i--)
{
while(top&&a[i]>a[s[top]])
p[i]+=v[s[top--]];
s[++top]=i;
}
for(int i=1;i<=n;i++)
ans=max(ans,p[i]);
printf("%d\n",ans);
return 0;
}
最新文章
- Premiere使用整理
- 谷毅(WingKu)横空出世
- Android学习笔记(二)——探究一个活动
- paip.mysql 全文索引查询空白解决
- 用dx实现半透遮挡效果
- mysql知识初篇(一)
- PS要点
- 全面解析java注解
- Android - Broadcast机制
- 2015必须推荐的Android框架,猿必读系列!
- The Painter&#39;s Partition Problem Part I
- PowerShell 批量修改AD属性
- python3.5连接oracle数据及数据查询
- 2018-12-25 VS Code英汉词典v0.0.8: 批量翻译文件部分命名
- mysql数据库 ,java 代码巧妙结合提升系统性能。
- WordCount
- java.lang.OutOfMemoryError: Java heap space内存不足问题
- MATLAB多项式运算
- Go signals 信号
- Linux awk使用方法~~整理
热门文章
- 【已解决】ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked
- 04003_CSS
- MYSQL Sorting result 把队列堆满了,该怎么办?
- 封装HttpURLConnection
- [bzoj1188][HNOI2007]分裂游戏_博弈论
- [bzoj3252]攻略_dfs序_线段树_贪心
- Java DynamoDB 增加、删除、修改、查询
- Oracle 设置用户密码永不过期
- mysql你确定掌握的那些sql语句
- How to force immediate stop of threads in Jmeter servers如何在jmeter执行完,立即停止jmeter