• AW128 编辑器


    题目地址


    注意点:

    • 最小前缀和仅需要维护光标前的数值,因此sum[i](前缀和)及f[i](最小前缀和)可直接依托top_1(代表光标前数值的栈)存在.

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int MAXN=2e6,INF=2e9;
    int stck_1[MAXN],top_1=0;//光标前 
    int f[MAXN];//最大前缀和 
    int id=0;
    int sum[MAXN];//前缀和 
    int stck_2[MAXN],top_2=0;//光标后 
    int main(){
    	memset(f,0xcf,sizeof(f));
    	int q;
    	scanf("%d",&q);
    	for(int i=1;i<=q;i++){
    		char opt;
    		cin>>opt;
    		if(opt=='I'){//光标前插入数值 
    			int x;
    			scanf("%d",&x);
    			stck_1[++top_1]=x;
    			sum[top_1]=sum[top_1-1]+x;
    			f[top_1]=max(f[top_1-1],sum[top_1]);
    		}else if(opt=='Q'){//查询最大前缀和 
    			int x;
    			scanf("%d",&x);
    			printf("%d
    ",f[x]);
    		}else if(opt=='L'){//光标左移 
    			if(!top_1)continue;
    			stck_2[++top_2]=stck_1[top_1--];
    		}else if(opt=='R'){//光标右移 
    			if(!top_2)continue;
    			stck_1[++top_1]=stck_2[top_2--];
    			sum[top_1]=sum[top_1-1]+stck_1[top_1];
    			f[top_1]=max(f[top_1-1],sum[top_1]);
    		}else if(opt=='D'){//删除光标前一个元素 
    			if(!top_1)continue;
    			top_1--;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    MySQL数据库基础
    Django框架
    Python基础
    C#
    小功能
    数据结构与算法
    C语言
    Robot Framework高级
    Robot Framework初级
    C++基础
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11741968.html
Copyright © 2020-2023  润新知