发射站(洛谷)

P1901发射站
算法:单调栈
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
int h[N],v[N],ans[N],mx;
stack<int> s;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>h[i]>>v[i];
    for(int i=1;i<=n;i++){
        while(!s.empty()&&h[s.top()]<h[i]){
        	ans[i]+=v[s.top()];
        	s.pop();
		}
		if(!s.empty())ans[s.top()]+=v[i];
        s.push(i);
    }
    for(int i=1;i<=n;i++) mx=max(mx,ans[i]);
    cout<<mx<<endl;
    return 0;
}
上一篇:四则运算(vector模拟栈,无括号版)


下一篇:C++ 学习之vector数组的容量和大小