题解
这道题一看就珂以用主席树啊
这是一道神奇的题目,那么我们先敲一个主席树,然后维护一个数组len,表示下一次应该在len + 1插入,
之后对于T操作,在上一个版本的len + 1上直接执行插入
对于Q操作,直接查询
对于U操作,直接找到对应版本复制即可

rt[rt_num] = rt[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)];
ls[rt_num] = ls[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)], rs[rt_num] = rs[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)];
len[rt_num] = len[rt_num - num - 1];

代码

#include <cstdio>
#include <iostream>
#define ll long longusing namespace std;ll read(){ll x = 0; int zf = 1; char ch = ' ';while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();if (ch == '-') zf = -1, ch = getchar();while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}int s[20000005];
int ls[20000005], rs[20000005];
int len[20000005];
int rt[20000005], pre[20000005];
int tot;inline void a(int pos){s[pos] = s[ls[pos]] + s[rs[pos]];
}inline int getNew(){return (++tot);
}void build(int pos, int l, int r){if (l == r){if (pos > tot)tot = pos;s[pos] = 0;return ;}int mid = (l + r) >> 1;ls[pos] = pos << 1, rs[pos] = (pos << 1) + 1;build(pos << 1, l, mid);build((pos << 1) + 1, mid + 1, r);a(pos);
}int query(int pos, int l, int r, int k){if (l == r)return s[pos];int mid = (l + r) >> 1;if (k <= mid)return query(ls[pos], l, mid, k);elsereturn query(rs[pos], mid + 1, r, k);
}void add(int pos, int pre, int l, int r, int k, int val){if (l == r){s[pos] = val;return ;}int mid = (l + r) >> 1;if (k <= mid){rs[pos] = rs[pre]; ls[pos] = getNew();add(ls[pos], ls[pre], l, mid, k, val);}else{ls[pos] = ls[pre]; rs[pos] = getNew();add(rs[pos], rs[pre], mid + 1, r, k, val);}a(pos);
}int main(){freopen("type.in", "r", stdin);freopen("type.out", "w", stdout);int q;q = read();rt[0] = 1, len[0] = 0;build(rt[0], 1, 100000);char op; int num; int rt_num = 0;for (int i = 1; i <= q; ++i){cin >> op;if (op == 'T'){char c; cin >> c;rt[++rt_num] = getNew();len[rt_num] = len[rt_num - 1] + 1;add(rt[rt_num], rt[rt_num - 1], 1, 100000, len[rt_num], (int)(c));}else if (op == 'Q'){num = read();printf("%c\n", (char)(query(rt[rt_num], 1, 100000, num)));}else if (op == 'U'){num = read(), ++rt_num;rt[rt_num] = rt[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)];ls[rt_num] = ls[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)], rs[rt_num] = rs[((rt_num - num - 1) > 0 ? (rt_num - num - 1) : 0)];len[rt_num] = len[rt_num - num - 1];}}fclose(stdin);fclose(stdout);return 0;
}

转载于:https://www.cnblogs.com/linzhengmin/p/10925395.html

[洛谷1383]高级打字机 题解相关推荐

  1. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  2. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  3. 洛谷P1273 有线电视网 题解

    洛谷P1273 有线电视网 题解 题目链接:P1273 有线电视网 题意: 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为 ...

  4. 洛谷P4568 [JLOI2011] 飞行路线 题解

    洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...

  5. 洛谷P3426 [POI2005]SZA-Template 题解

    洛谷P3426 [POI2005]SZA-Template 题解 题目链接:P3426 [POI2005]SZA-Template 题意:你打算在纸上印一串字母. 为了完成这项工作,你决定刻一个印章. ...

  6. 洛谷P1156 垃圾陷阱 题解浅谈刷表法与填表法

    洛谷P1156 垃圾陷阱 题解&浅谈刷表法与填表法 填表法 :就是一般的动态规划,当前点的状态,可以直接用状态方程,根据之前点的状态推导出来. 刷表法:由当前点的状态,更新其他点的状态.需要注 ...

  7. 洛谷P1262 间谍网络题解

    洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...

  8. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  9. 洛谷P4099 [HEOI2013]SAO 题解

    洛谷P4099 [HEOI2013]SAO 题解 题目链接:P4099 [HEOI2013]SAO 题意: Welcome to SAO ( Strange and Abnormal Online). ...

最新文章

  1. 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解(二)
  2. Linux嗅探ettercap
  3. jxl生成表格(合并单元格,字体,样式)
  4. spark的Web UI查看DAG的两种方式
  5. 这是小学数学的26个知识点,小孩hold不住,父母也易犯错
  6. 高通骁龙cpu排行_骁龙系列处理器性能分析,你的手机是什么处理器?
  7. 数列分段Section I(洛谷-P1181)
  8. 退出功能—session
  9. H5 获取连接参数,判断是否是手机端
  10. Krasovsky_1940_Albers投影介绍及转换
  11. java连接FTP下载文件
  12. mac上投屏android_有哪些支持安卓投屏Mac的软件
  13. Java中统计耗时的方法
  14. Nebula3 资源管理系统
  15. 和平精英有了氪金系统,玩家再也不敢开挂了?网友:你到亚服看看
  16. shell遍历多个数组
  17. 手机网页UI框架jQuery Mobile介绍之按钮篇
  18. cam全称_英文缩写,全称
  19. 【翻译】数据资产价值评估
  20. VirtualAPP技术应用及安全分析报告

热门文章

  1. 2022-2028年中国操作系统行业深度调研及投资前景预测报告
  2. 2022-2028年中国氯磺化聚乙烯橡胶行业市场深度分析及未来趋势预测报告
  3. 【K8S实践】关于Kubernetes Dashboard的实践学习
  4. 机器学习——标准化/归一化的目的、作用和场景
  5. MLIR中间表示和编译器框架
  6. 自动驾驶解决方案架构
  7. Tesla T4视频编码性能分析
  8. 2021年大数据Flink(二):Flink用武之地
  9. Java 二进制,八进制,十进制,十六进制
  10. android 调用裁切板