1.数列操作

  (array.pas/c/cpp)

【问题描述】

现在有一个数列,最初包含0个数。现在要对数列操作n次,操作有3类。

1) a k,在数列的最后插入一个整数k

2) s 将最近插入的数删除。

3) t k 将数列恢复第k次操作前的状态

下面是一个例子,有12个操作

1 a 5 -> [5] => 5 加入数5

2 a 3 -> [5,3] => 3 加入数3

3 a 7 -> [5,3,7] => 7 加入数7

4 s -> [5,3] => 3 删除数7

5 t 2 -> [5] => 5 回到操作2之前

6 a 2 -> [5,2] => 2 加入数2

7 t 4 -> [5,3,7] => 7 回到操作4之前

8 a 4 -> [5,3,7,4] => 4 加入数4

9 s -> [5,3,7] => 7 删除数4

10 t 7 -> [5,2] => 2 回到操作7之前

11 s -> [5] => 5 删除数2

12 s -> [] => -1 删除数5,数列空,输出-1.

【输入】

第一行一个整数N。

接下来N行,每行一个命令,格式如题目描述。

【输出】

N行,每次输出数列最后一个数的值,如果数列为空,输出-1。

【输入输出样例1】

array.in

array.out

12

a 5

a 3

a 7

s

t 2

a 2

t 4

a 4

s

t 7

s

s

5

3

7

3

5

2

7

4

7

2

5

-1

【数据范围】

40%  N<=100

60%  N<=5000

100%  1 <= N <= 80,000 ,1 <= K <= 1,000,000.

思路:

前两个询问很水,但是第三个询问就有技术含量了。

60%可以用二维数组来搞;是80000的数据二维数组是存不下的。

那么问题来了。

怎样才能保存各种版本的栈。

当!当!!当!!!

“可持续优化”闪亮登场。

什么是“可持续优化”?

就是用邻接表一样的东西。把每一次更新的状态储存,以便下一次调用。

就是酱紫:

 #include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<ctime>
#include<queue>
#include<iomanip>
using namespace std;
const int maxn=;
char q;
int n,k,top=;
int len=,linkk[maxn];
int a[maxn];
struct node
{
int x,y;
}e[maxn]; /*void init(int xx,int yy)
{
e[++len].y=linkk[xx];linkk[xx]=len;
e[len].x=yy;
}*/ int main()
{
freopen("array.in","r",stdin);
freopen("array.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for(int i=;i<=n;i++)
{
cin>>q;
if(q=='a')
{
cin>>k;
a[++top]=k;
e[i].x=e[i-].y;e[i].y=top;
linkk[top]=e[i].x;
}
if(q=='s')
{
e[i].x=e[i-].y;e[i].y=linkk[e[i-].y];
}
if(q=='t')
{
cin>>k;
e[i].x=e[i-].y;
e[i].y=e[k].x;
}
if(a[e[i].y]==)
cout<<"-1"<<endl;
else
cout<<a[e[i].y]<<endl;
}
return ;
}

11.12模拟考T1(可持续优化)PS:神奇的东西的更多相关文章

  1. 11.12模拟考T2(GCD)

    2.梅花桩   (blossom.pas/c/cpp) [问题描述] 小x在练习一门轻功,这门轻功是在梅花桩上跳来跳去,这门轻功是严格按照直线从一个梅花桩直接跳到另外一个梅花桩上.因为小x有恐高症,所 ...

  2. 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数

    最小公倍数(lcm.c/.cpp/.pas) 题目描述 给定两个正整数,求他们的最小公倍数. 样例输入 28 12 样例输出 84 数据范围 对于40%数据:1<=a,b<=10^9 对于 ...

  3. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  4. 【2020.11.28提高组模拟】T1染色(color)

    [2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...

  5. NOIp 11.11/12

    最后一场比较正式的NOIp模拟赛,写一发小总结.题目没什么好说的,大部分很简单,先贴一下代码. 1111 T1 //string //by Cydiater //2016.11.11 #include ...

  6. 【2018.06.26NOIP模拟】T1纪念碑square 【线段树】*

    [2018.06.26NOIP模拟]T1纪念碑square 题目描述 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一 ...

  7. 18/9/22NOIP模拟考

    18/9/22NOIP模拟考 其实本来是有多组数据的,出题人忘记在题面上加了   斜眼笑 期望得分:100:实际得分:100 由于种种原因,拿到题的时候已经过去了0.5h+... 然后因为这道题数据范 ...

  8. 9.11 myl模拟赛

    9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...

  9. JZOJ2020年8月11日提高组T1 密码

    JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...

随机推荐

  1. 关于css样式2

    css文本 CSS 文本属性可定义文本的外观. 通过文本属性,您可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. 缩进文本 把 Web 页面上的段落的第一行缩进,这是一种最常用 ...

  2. [小菜随笔]关于monkey报错日志分析

    今天小菜在一个测试群内看到群友发出一个monkey的报错信息,其实是一个很简单的报错 个人觉得monkey虽然操作起来比较简易,但其实查看日志分析日志也是很重要的环节,如果对错误分析不够详细,就容易误 ...

  3. 开启GZIP(转)

    因为在做一个项目,项目里面服务器主要提供数据,但是数据多了文件就大了,比较浪费流量和时间,我们便用Gzip来处理.我在本机上是apache,服务器上是IIS6.0,用的是php,那么我就在这里分享一下 ...

  4. Iframe 知识点总结

    JS刷新框架外页面七种实现代码: 1. window.parent.frames[1].location.reload(); 2. window.parent.frames.bottom.locati ...

  5. 使用CSS3动画模拟实现小球自由落体效果

    使用纯CSS代码模拟实现小球自由落体效果: html代码如下: <div id="ballDiv"> <div id="ball">&l ...

  6. 我的PHP编程环境变迁:notepad -> notepad++ -> Sublime Text2 -> PhpStorm

    10多年前最一开始写PHP程序的时候是用windows自带的notepad,现在想来真的很屌丝. 后来经人推荐换成了notepad++,感觉还是相当不错的(中间还用过一阵子editplus). 比较喜 ...

  7. export a java project to runable jar

    When a java project needs to be transfered to another machine, e.g. vps, we need to export it to a r ...

  8. SparkMLlib之 logistic regression源码分析

    最近在研究机器学习,使用的工具是spark,本文是针对spar最新的源码Spark1.6.0的MLlib中的logistic regression, linear regression进行源码分析,其 ...

  9. UITabBarController使用总结

    刚看了几天教程就开始跟着开发了,以前也没学过C,太痛苦了~只能看看大神的博客,自己再总结学习一下了. 1.首先新建一个TabBarViewController继承于UITabBarController ...

  10. Android开源框架:Universal-Image-Loader解析(三)DiskCache