URAL 1992
CVS
Description
Input
- learn ci pi. Teach clone ci program pi (1 ≤ pi ≤ m).
- rollback ci. Cancel the last learned program for clone ci.
- relearn ci. Apply ‘re-learn’ function to clone ci.
- clone ci. Clone the clone ci.
- check ci. Display the last program clone ci has learned and knows at the moment.
It is guaranteed that rollback won’t be applied to the clone that is at the basic knowledge level. learn is always applied with the program a clone doesn’t already know. relearn is only applied if the cancellation history of a clone is not empty. It is also guaranteed that only the clones that already exist can occur in the queries. The numbers are assigned to the clones in the order the clones appear. The Kaminuans started their experiments from clone number one.
Output
Sample Input
| input | output |
|---|---|
9 10 |
5 |
#include <cstdio>
#include <iostream>
#define N 500005
using namespace std;
int now[N],tot_ro,c,p;
int stack[N],pre[N],tot;
int stack_ne[N],now_ne[N],next[N],tot_ne;
char order[];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
tot=tot_ne=;
tot_ro=;
now[]=now_ne[]=;
for(int i=; i<n; i++){
scanf("%s",order);
switch (order[]) {
case 'n'://learn
scanf("%d%d",&c,&p);
stack[++tot]=p;
pre[tot]=now[c];
now[c]=tot;
now_ne[c]=;
break;
case 'b'://rollback
scanf("%d",&c);
if(now[c]!=){
stack_ne[++tot_ne]=stack[now[c]];
next[tot_ne]=now_ne[c];
now_ne[c]=tot_ne;
now[c]=pre[now[c]];
}
break;
case 'a'://relearn
scanf("%d",&c);
if(now_ne[c]!=){
stack[++tot]=stack_ne[now_ne[c]];
pre[tot]=now[c];
now[c]=tot;
now_ne[c]=next[now_ne[c]];
}
break;
case 'e'://clone
scanf("%d",&c);
if(c<=tot_ro){
now[++tot_ro]=now[c];
now_ne[tot_ro]=now_ne[c];
}
break;
case 'k'://check
scanf("%d",&c);
if(now[c]==)
printf("basic\n");
else
printf("%d\n",stack[now[c]]);
break;
}
}
}
return ;
}
URAL 1992的更多相关文章
- URAL 1992 CVS
CVS 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1992 Description Yoda: Visit I will the c ...
- URAL 1992 CVS 可持久化链栈
http://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html 看这篇的链表部分的介绍应该就能理解“可持久化”了 动态分配内存的会T,只能 ...
- URAL 1992 CVS 链表
不更改链表结构,只是添加节点,没有删除节点.通过记录和更改标记来模拟题意的插入和删除,复制 指针模拟链表: 预开指针,存在M[]中,可以提高效率 #include<functional> ...
- 后缀数组 POJ 3974 Palindrome && URAL 1297 Palindrome
题目链接 题意:求给定的字符串的最长回文子串 分析:做法是构造一个新的字符串是原字符串+反转后的原字符串(这样方便求两边回文的后缀的最长前缀),即newS = S + '$' + revS,枚举回文串 ...
- ural 2071. Juice Cocktails
2071. Juice Cocktails Time limit: 1.0 secondMemory limit: 64 MB Once n Denchiks come to the bar and ...
- ural 2073. Log Files
2073. Log Files Time limit: 1.0 secondMemory limit: 64 MB Nikolay has decided to become the best pro ...
- ural 2070. Interesting Numbers
2070. Interesting Numbers Time limit: 2.0 secondMemory limit: 64 MB Nikolay and Asya investigate int ...
- ural 2069. Hard Rock
2069. Hard Rock Time limit: 1.0 secondMemory limit: 64 MB Ilya is a frontman of the most famous rock ...
- ural 2068. Game of Nuts
2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still in proces ...
随机推荐
- LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting
定义:在Vugen中Run-Time Setting是用来设置脚本运行时所需要的相关选项
- WinForm程序界面假死,寻求完美解决方案
故事的开端是这样的,小白是一个程序员,他确实也是一个小白,目前还在程序员发展的道路上,兢兢业业的小心求学. 有一天,小白接到一个任务,完成一个Winform程序,附加一个功能就是可以读IC卡. 小白终 ...
- 2436: [Noi2011]Noi嘉年华 - BZOJ
Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...
- SQLServer 触发器 同时插入多条记录有关问题
由于 SQL Server 的触发器, 没有 FOR EACH ROW (ORACL中有)的选项, 有时候不正确的使用 inserted 与deleted 可能会有点麻烦. 下面来一个简单的例子 -- ...
- PHP开发框架[国内框架]
1.Thinkphp http://thinkphp.cn/ 2.Brophp http://www.brophp.com/zf/ 由LAMP兄弟连打造 3.WindFramework http ...
- PHP之mysql_real_escape_string()函数讲解
定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符. 下列字符受影响: \x00 \n \r \ ' " \x1a 如果成功, ...
- Unity3D 游戏开发构架篇 ——角色类的设计与持久化
在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等 ...
- PHP 性能分析与实验(二)——PHP 性能的微观分析
[编者按]此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点.本文就改变 P ...
- SNAT
http://blog.chinaunix.net/uid-2628744-id-2454879.html
- 使用getScript()方法异步加载并执行js文件
使用getScript()方法异步加载并执行js文件 使用getScript()方法异步请求并执行服务器中的JavaScript格式的文件,它的调用格式如下所示: jQuery.getScript(u ...