【HDU 4699】 Editor

【题目链接】

http://acm.hdu.edu.cn/showproblem.php?pid=4699

【算法】

维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数

在维护栈的同时求最大前缀和,即可

【代码】

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
const int INF = 2e9;

class mstack
{
        private :
                int tot;
                int s[MAXN];
        public :
                inline void clear()
                {
                        tot = 0;
                }
                inline void push(long long x)
                {
                        tot++;
                        s[tot] = x;
                }
                inline void pop()
                {
                        tot--;
                }
                inline long long top()
                {
                        return s[tot];
                }
                inline bool empty()
                {
                        return tot == 0;
                }
} s1,s2;

int q,pos;
long long x;
long long sum[MAXN],f[MAXN];
char opt[5];

int main()
{

        while (scanf("%d",&q) != EOF)
        {
                f[0] = -INF;
                s1.clear();
                s2.clear();
                pos = 0;
                while (q--)
                {
                        scanf("%s",&opt);
                        if (opt[0] == ‘I‘)
                        {
                                scanf("%lld",&x);
                                s1.push(x);
                                pos++;
                                sum[pos] = sum[pos-1] + x;
                                f[pos] = max(f[pos-1],sum[pos]);
                        }
                        if (opt[0] == ‘D‘)
                        {
                                if (s1.empty()) continue;
                                s1.pop();
                                pos--;
                        }
                        if (opt[0] == ‘L‘)
                        {
                                if (s1.empty()) continue;
                                x = s1.top();
                                s1.pop();
                                s2.push(x);
                                pos--;
                        }
                        if (opt[0] == ‘R‘)
                        {
                                if (s2.empty()) continue;
                                x = s2.top();
                                s2.pop();
                                s1.push(x);
                                pos++;
                                sum[pos] = sum[pos-1] + x;
                                f[pos] = max(f[pos-1],sum[pos]);
                        }
                        if (opt[0] == ‘Q‘)
                        {
                                scanf("%lld",&x);
                                printf("%lld\n",f[x]);
                        }
                }
        }

        return 0;

}

原文地址:https://www.cnblogs.com/evenbao/p/9245355.html

时间: 2024-10-05 05:18:58

【HDU 4699】 Editor的相关文章

【HDU 4940】Destroy Transportation system(数据水/无源无汇带上下界可行流)

Description Tom is a commander, his task is destroying his enemy’s transportation system. Let’s represent his enemy’s transportation system as a simple directed graph G with n nodes and m edges. Each node is a city and each directed edge is a directe

【HDU 1009】FatMouse&#39; Trade

题 Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBeans and requires F[i] pounds of c

【HDU 5647】DZY Loves Connecting(树DP)

pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 332    Accepted Submission(s): 112 Problem Description DZY has an unroote

【2014 Multi-University Training Contest 3 1002】/【HDU 4888】 Redraw Beautiful Drawings

不容易啊,终于可以补第二个题了!! 顺便说一句:模版写残了就不要怪出题人啊 ~ (这残废模版研究了好长时间才找出错) 题目大意: 有一个n*m的矩阵,每一个格子里都将有一个数.给你每一行数字之和和每一列数字之和.求每一个位置能填0~k之间的哪个数.如果有多种可能输出"Not Unique",如果没有解输出"Impossible",如果一组解则将其输出. 解题思路: 最大流: 不可能的条件:是行之和和列之和不想等或者建图后的最大流与他们不想等. 多组的条件是:在最大流

【HDU 1839】 Delay Constrained Maximum Capacity Path(二分+最短路)

[HDU 1839] Delay Constrained Maximum Capacity Path(二分+最短路) Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1515    Accepted Submission(s): 481 Problem

【HDU 5828】Rikka with Sequence(线段树)

[HDU 5828]Rikka with Sequence(线段树) Rikka with Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2311    Accepted Submission(s): 391 Problem Description As we know, Rikka is poor at math.

【HDU 4352】 XHXJ&#39;s LIS (数位DP+状态压缩+LIS)

XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2422    Accepted Submission(s): 990 Problem Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then careful

【HDU 5811】Colosseo(拓扑+输入优化)

[HDU 5811]Colosseo(拓扑+输入优化) Colosseo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 446    Accepted Submission(s): 98 Problem Description Mr. Chopsticks keeps N monsters, numbered from 1 to N.

【HDU 5145】 NPY and girls(组合+莫队)

pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 593    Accepted Submission(s): 179 Problem Description NPY's girlfriend blew him out!H