2 条题解

  • 0
    @ 2025-10-8 16:55:59
    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e6+5;
    int a[N], b[N], top, blen, alen, f[N], sum[N];
    int main()
    {
        int T;scanf("%d", &T);
        memset(f, -0x3f3f3f3f, sizeof f);
        sum[0]=0;
        while(T--)
        {
            char s[5];int x;
            scanf("%s", s);
            if(s[0]=='I')
            {
                scanf("%d", &x);
                a[++alen]=x;
                sum[alen]=sum[alen-1]+x;
                f[alen]=max(f[alen-1], sum[alen]);
            }
            else if(s[0]=='D')
            {
                if(alen)
                {
                    a[alen]=0;
                    f[alen]=0;
                    sum[alen--]=-0x3f3f3f3f;
                }
            }
            else if(s[0]=='L')
            {
                if(alen)
                {
                    b[++blen]=a[alen];
                    a[alen--]=0;
                }
            }
            else if(s[0]=='R')
            {
                if(blen)
                {
                    a[++alen]=b[blen], b[blen--]=0;
                    sum[alen]=sum[alen-1]+a[alen];
                    f[alen]=max(f[alen-1], sum[alen]);
                }
            }
            else
            {
                scanf("%d", &x);
                int s=min(x, alen);
                if(s)printf("%d\n", f[s]);
                else puts("0");
            }
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:55:45
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+5;
      int a[N],b[N],top,blen,alen,f[N],sum[N];
      int main()
      {
          int T;scanf("%d",&T);
          memset(f,-0x3f,sizeof f);
          sum[0]=0;
          while(T--)
          {
              char s[5];int x;
              scanf("%s",s);
              if(s[0]=='I')
              {
                  scanf("%d",&x);
                  a[++alen]=x;
                  sum[alen]=sum[alen-1]+x;
                  f[alen]=max(f[alen-1],sum[alen]);
              }
              else if(s[0]=='D')
              {
                  if(alen)
                  {
                      a[alen]=0;
                      f[alen]=0;
                      sum[alen--]=-0x3f3f3f3f;
                  }
              }
              else if(s[0]=='L')
              {
                  if(alen)
                  {
                      b[++blen]=a[alen];
                      a[alen--]=0;
                  }
              }
              else if(s[0]=='R')
              {
                  if(blen)
                  {
                      a[++alen]=b[blen],b[blen--]=0;
                      sum[alen]=sum[alen-1]+a[alen];
                      f[alen]=max(f[alen-1],sum[alen]);
                  }
              }
              else
              {
                  scanf("%d",&x);
                  int s=min(x,alen);
                  if(s)printf("%d\n",f[s]);
                  else puts("0");
              }
          }
          return 0;
      }
      • 1

      *【模拟(难度:7)】数列编辑器[hdu4699]

      信息

      ID
      1267
      时间
      1000ms
      内存
      64MiB
      难度
      6
      标签
      递交数
      119
      已通过
      34
      上传者