11.12模拟考T1(可持续优化)PS:神奇的东西
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:神奇的东西的更多相关文章
- 11.12模拟考T2(GCD)
2.梅花桩 (blossom.pas/c/cpp) [问题描述] 小x在练习一门轻功,这门轻功是在梅花桩上跳来跳去,这门轻功是严格按照直线从一个梅花桩直接跳到另外一个梅花桩上.因为小x有恐高症,所 ...
- 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
最小公倍数(lcm.c/.cpp/.pas) 题目描述 给定两个正整数,求他们的最小公倍数. 样例输入 28 12 样例输出 84 数据范围 对于40%数据:1<=a,b<=10^9 对于 ...
- 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字
美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...
- 【2020.11.28提高组模拟】T1染色(color)
[2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...
- NOIp 11.11/12
最后一场比较正式的NOIp模拟赛,写一发小总结.题目没什么好说的,大部分很简单,先贴一下代码. 1111 T1 //string //by Cydiater //2016.11.11 #include ...
- 【2018.06.26NOIP模拟】T1纪念碑square 【线段树】*
[2018.06.26NOIP模拟]T1纪念碑square 题目描述 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一 ...
- 18/9/22NOIP模拟考
18/9/22NOIP模拟考 其实本来是有多组数据的,出题人忘记在题面上加了 斜眼笑 期望得分:100:实际得分:100 由于种种原因,拿到题的时候已经过去了0.5h+... 然后因为这道题数据范 ...
- 9.11 myl模拟赛
9.11 myl 模拟赛 100 + 100 + 0 第一题耗费了太多的时间,导致最后一题没有时间想,直接去写了暴力,而且出题人没有给暴力分.... Problem 1. superman [题目描述 ...
- JZOJ2020年8月11日提高组T1 密码
JZOJ2020年8月11日提高组T1 密码 题目 Description 在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏.今天他们正在观赏大地 ...
随机推荐
- Http的Get/Post请求区别
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
- xcode6 使用pch出错解决办法
1down vote If you decide to add a .pch file manually and you want to use Objective-C just like befor ...
- MySQL数据库9 - 日期与时间函数
一 日期和时间函数 函数的概念:按指定格式输入参数,返回正确结果的运算单元 1. 返回当前日期:curdate() current_date() current_date()+0可以将当前日期转换为数 ...
- hdu 2062
ps:11版的最后一题...是个递推题...比如n=5,推出首数字后,n--,继续找下一个 代码: #include "stdio.h" ]; ]; int main(){ lon ...
- linux内核分析——扒开系统调用的三层皮(下)
20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验 ...
- Django01
1.创建django project 2.创建app 在一个project下可以创建多个app,比如运维系统这个project下面包含监控app.cmdb app等等,这些app共享project里的 ...
- 中秋时候做了一个ppt画图插件
http://office.guanexcel.com/chart/chart.html PowerPoint里面简单的画图工具,输入数据选择图样即可插入到PPT中了
- SQL盲注之正则攻击
我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中bli ...
- 深入理解JavaScript系列:各种上下文中的this
开头闲扯几句.上篇写对象原型的文章获得了1K多的阅读和几条评论,心里还是蛮欣喜的.那种写出来然后有人跟你讨论的感觉很不错. 公告里已经有写,自己开这个博客以及为什么要写文章的原因就是为了能把自己所思所 ...
- 视音频技术作业一:比较CCD与CMOS摄像的区别
作业详解: CCD与CMOS简介: CCD: CCD是Charge Coupled Device(电荷耦合器件)的缩写,它是一种半导体成像器件,因而具有灵敏度高.抗强光.畸变小.体积小.寿命长.抗震动 ...