1 条题解
-
0
// 单调栈 O(n) #include<bits/stdc++.h> using namespace std; const int N = 1000005; int n, h[N], v[N]; int sum[N]; // sum[i]:每个站接收的能量和 int q[N]; // 栈 int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> h[i] >> v[i]; int top = 0; for (int i = 1; i <= n; i++) { while (top && h[q[top]] < h[i]) sum[i] += v[q[top--]]; // 栈顶的能量给i sum[q[top]] += v[i]; // i的能量给栈顶 q[++top] = i; // i入栈 } int ans = 0; for (int i = 1; i <= n; i++) ans = max(ans, sum[i]); cout << ans; return 0; }
- 1
信息
- ID
- 2368
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 185
- 已通过
- 45
- 上传者