luogu1901 发射站
Posted 探险家Mr.H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu1901 发射站相关的知识,希望对你有一定的参考价值。
单调栈 正着插一遍反着插一遍 记录每个点左边右边第一个比他高的。。。
yyc太强辣
#include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> #define ll long long using namespace std; const int maxn=1000000+50; int st[maxn],top; int n,a[maxn],v[maxn]; int ans[maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&v[i]); for(int i=1;i<=n;i++) { while(top>0 && a[st[top]]<=a[i])top--; ans[st[top]]+=v[i]; st[++top]=i; } top=0; int Ans=-1; for(int i=n;i>=1;i--) { while(top>0 && a[st[top]]<=a[i])top--; ans[st[top]]+=v[i]; st[++top]=i; } for(int i=n;i>=1;i--)Ans=max(Ans,ans[i]); cout<<Ans; }
以上是关于luogu1901 发射站的主要内容,如果未能解决你的问题,请参考以下文章