Splay
yashem66
长期提供绕地人造卫星清洗除尘服务。
展开
-
BZOJ1014 火星人prefix (splay 哈希 二分答案)
题目大意给定一个字符串,要求可以完成以下三种操作: I pos ch 在pos这个位置之后插入字符ch; R pos ch 将pos这个位置的字符换为ch; Q x y 查询从x开始的后缀和从y开始的后缀的LCP(最长公共前缀)。 题解读完题目我首先想到的是后缀数据结构,但是后缀数据结构并不支持修改操作。想了一会儿发现思路并不太对于是我就去翻了大爷的题解,发现是splay+hash+二分答案。大体思原创 2017-04-09 15:16:48 · 577 阅读 · 0 评论 -
BZOJ2258 文本校对 (Splay Hash 二分答案)
题目大意同bzoj1014,注意这里面的询问很鬼畜。要注意二分答案的上界的设定。题解题解见bzoj1014:读完题目我首先想到的是后缀数据结构,但是后缀数据结构并不支持修改操作。想了一会儿发现思路并不太对于是我就去翻了大爷的题解,发现是splay+hash+二分答案。大体思路就是用splay结构维护这个字符串,并且在每一个结点维护子树字符串的哈希值。由于询问操作的答案具有单调性,所以可以用二分答案解原创 2017-04-12 09:17:08 · 604 阅读 · 0 评论 -
BZOJ1269 文本编辑器 (Splay)
题目大意: 维护一个文本编辑器,支持下列操作: 1.将光标移动到某一位置 2.在光标后插入一段字符串 3.删除光标后的一段字符 4.翻转光标后的一段字符 5.输出光标后的一个字符 6.光标– 7.光标++ ——PoPoQQQ 题解Splay模板训练题,注意读入Insert之后要读入一个回车(多余字符),这道题bzoj给我发了一份错误的数据,导致原创 2017-04-11 18:57:26 · 525 阅读 · 0 评论 -
BZOJ1552/3506 robotic sort (Splay 离散化)
题目大意区间长度为n,操作n次,在第i次操作的时候找出区间中第i小的元素的位置pos并翻转区间[i,pos],并输出位置pos。对于键值相同 的元素,初始位置靠前的优先翻转。题解splay裸题,每次维护最小元素键值和最小元素的指针。代码#include <cstdio> #include <iostream> #include <algorithm> using namespace std;cons原创 2017-04-11 13:49:37 · 984 阅读 · 0 评论 -
BZOJ3323 文艺平衡树 (splay 绿色无毒模板)
题目大意您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 。题解splay裸题,维护子树翻转信息即可。代码:#include <cstdio> #include <iostream> using namespace std;struct Node { int原创 2017-04-10 18:12:19 · 491 阅读 · 2 评论 -
(新知)数据结构--Splay--模板
写了一发splay的模板,在正常的应用中应该是够用了。除了具备splay特有的功能比如区间的分裂与合并,还具有所有treap的功能,同时也可以维护区间的最大值最小值。对于初次学习splay比较有帮助。原创 2016-12-09 15:58:41 · 525 阅读 · 0 评论