STL单调栈30分,求助大犇

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(); } s.push(i); } for (int i = 1; i <= n; i++) mx = max(mx, ans[i]); cout << mx << endl; }
by aqfong @ 2018-09-26 22:48:37


谢谢好题推荐,太晚了明天做
by ___I_AK_IOI @ 2018-09-26 22:50:30


1. ``` #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(); } s.push(i); } for (int i = 1; i <= n; i++) mx = max(mx, ans[i]); cout << mx << endl; } ```
by aqfong @ 2018-09-26 22:50:48


|