博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 1992 CVS 可持久化链栈
阅读量:5740 次
发布时间:2019-06-18

本文共 1720 字,大约阅读时间需要 5 分钟。

看这篇的链表部分的介绍应该就能理解“可持久化”了

动态分配内存的会T,只能用静态

#include 
#include
#include
#include
#include
using namespace std;struct node { int p; int next;};const int maxn = 500005;node nd[maxn * 2];int ha[maxn], hb[maxn];int c;int cnt;void add(int &head, int p) { nd[cnt].p = p; nd[cnt].next = head; head = cnt++;}int main() { int n, m; while(scanf("%d%d", &n, &m) != EOF) { c = 1; cnt = 0; ha[c] = -1; hb[c] = -1; for(int i = 1; i <= n; i++) { char op[20]; scanf("%s", op); if(strcmp(op, "learn") == 0) { int id, p; scanf("%d%d", &id, &p); add(ha[id], p); hb[id] = -1; } else if(strcmp(op, "rollback") == 0) { int id; scanf("%d", &id); add(hb[id], nd[ha[id]].p); ha[id] = nd[ha[id]].next; } else if(strcmp(op, "clone") == 0) { int id; scanf("%d", &id); c++; ha[c] = ha[id]; hb[c] = hb[id]; } else if(strcmp(op, "check") == 0) { int id; scanf("%d", &id); if(ha[id] == -1) { printf("basic\n"); } else printf("%d\n", nd[ha[id]].p); } else if(strcmp(op, "relearn") == 0) { int id; scanf("%d", &id); add(ha[id], nd[hb[id]].p); hb[id] = nd[hb[id]].next; } } return 0; } return 0;}
View Code

 

转载于:https://www.cnblogs.com/BMan/p/3874867.html

你可能感兴趣的文章
java中awt事件处理_Java AWT 事件处理
查看>>
java斜体_Java可以指示字体是否为斜体字
查看>>
蓝桥杯大赛java组准备_蓝桥杯大赛java组算法类冲刺第一天
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
java的maxrow_聊聊pg jdbc statement的maxRows参数
查看>>
centos7安装mysql视频教程_centos7安装mysql(完整)
查看>>
php图片赋值,php如何优雅地赋值
查看>>
dz.27z.co index.php,dz7.2 伪静态规则
查看>>
php字符串解析xml文件,PHP通过DOM解析XML文件或者xml字符串_PHP教程
查看>>
matlab corr2原码,Ncorr-二维数字图像校正软件
查看>>
mysql增量,MySQL完全、增量的备份与恢复
查看>>
matlab程序复制出现乱码,matlab代码或中文复制到word就变成乱码怎么办?
查看>>
java writer append,Java StringWriter append()方法
查看>>
动态矩阵 matlab代码,动态矩阵控制
查看>>
用php实现一个音频播放的代码,用VBS实现音乐播放的多个代码小结
查看>>
linux原生迅雷文本模式,ubuntu 下运行原生的迅雷
查看>>
linux系统真正优势学习方法,Linux系統真正的優勢以及學習方法,linux優勢學習方法...
查看>>
上海师范大学c语言考卷答案,上海师范大学C语言期末考试标准试卷.doc
查看>>