编辑器题目栈。对顶堆

Posted rstz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编辑器题目栈。对顶堆相关的知识,希望对你有一定的参考价值。

技术图片


用两个栈来模拟光标的移动,sum来维护A栈的前缀和,f用来维护最大值。


  1 #include <iostream>
  2 #include <algorithm>
  3 #include <stack>
  4 using namespace std;
  5 stack<int> A, B;
  6 constexpr size_t N = 1e6 + 5;
  7 int sum[N], f[N];
  8 
  9 int main() {
 10     int m;
 11     cin >> m;
 12     f[0] = -1e7;//初始化一定记住
 13     while (m --) {
 14         char cmd;
 15         int x;
 16         cin >> cmd;
 17         if (cmd == ‘I‘) {
 18             cin >> x;
 19             A.push(x);
 20             sum[A.size()] = sum[A.size() - 1] + x;
 21             f[A.size()] = max(f[A.size() - 1], sum[A.size()]);
 22         }
 23         if (cmd == ‘D‘)
 24             if (!A.empty())
 25                 A.pop();
 26 
 27         if (cmd == ‘L‘) {
 28             if(!A.empty()) {
 29                 B.push(A.top());
 30                 A.pop();
 31             }
 32         }
 33 
 34         if (cmd == ‘R‘) {
 35             if (!B.empty()) {
 36                 A.push(B.top());
 37                 B.pop();
 38                 sum[A.size()] = sum[A.size() - 1] + A.top();
 39                 f[A.size()] = max(f[A.size() - 1], sum[A.size()]);
 40             }
 41         }
 42 
 43         if (cmd == ‘Q‘) {
 44             cin >> x;
 45             cout << f[x] << endl;
 46         }
 47     }
 48     return 0;
 49 }
 50 


以上是关于编辑器题目栈。对顶堆的主要内容,如果未能解决你的问题,请参考以下文章

对顶堆与应用

中位数 对顶堆

黑匣子 对顶堆

浅谈对顶堆

P1168 中位数(对顶堆)

poj 3784(对顶堆)