首页 > 其他 > 详细

P2201 数列编辑器

时间:2020-04-26 19:28:52      阅读:55      评论:0      收藏:0      [点我收藏+]

传送门呀呀呀呀呀呀呀呀呀呀呀呀呀

\(乍一看题目好像很难\)(实际也确实很难)

\(但是我们仔细看就发现,整个数列分成了光标前和光标后两组数列\)

\(我们有什么理由不分开储存呢??\)

\(然后光标移前移后无非是把光标前数组的最后一个数放在光标后数组的第一个数\)

\[\Huge\color{Purple}{这难道和栈不类似嘛!!} \]

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+9;
int a[maxn],b[maxn],topa,topb,n,S[maxn],ans[maxn];
int main()
{
	cin>>n;
	ans[0]=-999999999;
	for(int i=1;i<=n;i++)
	{
		char s;int w;
		cin>>s;
		if(s==‘I‘)
		{
			scanf("%d",&w);
			a[++topa]=w;
			S[topa]=S[topa-1]+w;
			ans[topa]=max(ans[topa-1],S[topa]);
			
		}
		else if(s==‘D‘)	a[topa--]=0;
		else if(s==‘L‘)	b[++topb]=a[topa--];
		else if(s==‘R‘)
		{
			a[++topa]=b[topb--];
			S[topa]=S[topa-1]+a[topa];
			ans[topa]=max(ans[topa-1],S[topa]);
		}
		else
		{
			scanf("%d",&w);//最大前缀和 
			printf("%d\n",ans[w]);
		}
	}
}

P2201 数列编辑器

原文:https://www.cnblogs.com/iss-ue/p/12781580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!