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. powershell中使用超大内存对象

    powershell中使用超大内存对象 简单介绍了powershell中超大内存对象的用途,开启powershell超大内存对象的办法. powershell 传教士 原创文章 2016-12-31 ...

  2. fatal error: 'XCTest/XCTest.h' file not found

    这个报错在几个方面.第一,它导致XCTedt依赖您的应用程序.框架,它只是在Xcode中可用.第二,你使用绝对路径,这并不保证是相同的从Mac Mac(例如,如果你安装了多个版本的Xcode). 这里 ...

  3. 如何让UIView中的Button点击之后跳转到另一个ViewController上去,ViewController上也有一个按钮 可以返回

    第一种方法:如果使用导航第一个按钮方法:[self.navigationController pushViewController:secondVC animated:YES];第二个按钮方法:[se ...

  4. ldap + kerberos + google authentication 实现两步验证

    第一步:ldap + kerberos 整合  ,参考之前的文章 第二步:google authentication 安装配置,参考之前的文章 第三步:整合 ldap + kerberos + goo ...

  5. MySQL5.6下使用xtrabackup部分备份恢复到MySQL5.7

    现有需求:需要备份MySQL5.6环境下的部分表到MySQL5.7环境下并进行恢复 通过xtrabackup 实现部分备份有三种方式: 参考链接:http://blog.csdn.net/zhu197 ...

  6. hive学习

    大数据的仓库Hive学习  10期-崔晓光 2016-06-20  大数据   hadoop   10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...

  7. IOS managerTime

    1. NSString ->NSdate NSString *birthday =  self.btnBirthday.titleLabel.text; NSDateFormatter *dat ...

  8. Unable to run app in Simulator

    xcode6 beta出现 “Unable to run app in Simulator” 错误提示,之前一直用着好好的,重启xcode就可以了. xcode6 beta出现 “Unable to ...

  9. 使用 IDEA + Maven + Git 快速开发 JAVA或者Web 应用(转)

    0-0 前言 最近和同事做爬虫,其中我主要遇到的问题是:同事在github上放了爬虫demo让我自己去下载,然后自己能搭好环境让整个项目跑起来去抓51job找工作数据.git上克隆一个项目下来,项目是 ...

  10. Linux下查看tomcat连接数 .

    netstat -na | grep ESTAB | grep 80 | wc -l 80是端口号