题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1269大致思路:用splay维护整个文本信息,splay树的中序遍历即为该文本。收获:1、可以先在文本开始和结尾个插入一个节点,然后每次操作都适当调整位置,这样可以减少特判(插入一段文本到0位置,...
分类:
其他好文 时间:
2015-02-06 18:19:11
阅读次数:
93
其实这里就是用Treap来实现了一个求和的过程,其实这种区间操作还是用线段树或者是Splay比较方便。将点排序之后随便搞一下就就好,要注意的就是有点重复情况,我这里是把树的每一个节点又添加了一个cnt域来维护的,自己手撸的平衡树就是这么灵活= =#include #include #include ...
分类:
其他好文 时间:
2015-02-06 13:07:20
阅读次数:
111
很水的题,找一下前驱和后继第一次写Splay,感觉非常蛋疼,而且不用指针搞各种debug不能。他是利用伸展操作来保证平均复杂度的,不过写过Treap之后,伸展操作并不难理解= =,不过写起来感觉还是有点蛋疼的,所以这遍是仿照cxlove的写法的#include #include #include #...
分类:
其他好文 时间:
2015-02-06 12:47:35
阅读次数:
203
要实现的操作是插入,删除,找到比指定值大的,小的值操作。Splay的删除操作可以是直接用二叉搜索树的删除方式,或者是先将要删除的节点Splay到根,然后找到左子树中最大的节点,将其Splay到根的左儿子位置,此时这个节点必然是没有右子树的,然后直接把他当做根就好。找大的值可以先找到如果要插入这个值会...
分类:
其他好文 时间:
2015-02-06 12:41:24
阅读次数:
208
题意:给定一个带点权的无向图,有两种操作: 1、将两个连通分量合并。 2、查询某个连通分量里的第K大点。题解:用并查集维护连通关系,一开始建立n棵splay树,然后不断合并,查询。处理技巧: 1、每个顶点u所在的Splay就是T[find(u)]。 2、每个顶点在树中对应的节点编号就是该顶点...
分类:
其他好文 时间:
2015-02-05 20:24:24
阅读次数:
410
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1503题解:维护一颗Splay和一个外部变量,树中每个节点表示一个人,节点权值a +外部变量delta =该员工工资。细节看代码。注意:一进来工资就低于最低工资的人不能算是“离开公司”的人。 1....
分类:
其他好文 时间:
2015-02-05 00:46:29
阅读次数:
262
大致题意:有一个空序列,依次插入1~N到该序列中,每次制定插入的位置,每次插入完成返回当前序列的LIS的长度。题解:设dp[i]表示前缀1~i的最长上升子序列的长度。因为是按照递增顺序插入的,所以dp[i] = max{ dp[j] | j 2 #include 3 #define maxn ...
分类:
其他好文 时间:
2015-02-04 21:43:45
阅读次数:
484
题意:依次插入i到pos[i],查询插入后当前LIS。
思路:splay。因为插入的数是升序的,那么对于i,只要知道pos[i]之前的最大LIS---x,那么以i结尾的最大LIS=x+1。那么只要在splay
中,只要维护一个当前区间最大的LIS,插入的时候,把第pos-1位的点旋到根root,把pos位的点旋到根的右结点R(root),新插入的
点插在L(R(root))即可,结点的值...
分类:
其他好文 时间:
2015-01-31 16:26:49
阅读次数:
209
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本...
分类:
其他好文 时间:
2015-01-31 14:28:37
阅读次数:
185
题意:有两种操作: 1. C l r x: 区间[l,r]的数加x。 2. Q l r : 查询区间[l,r]的和。
思路:线段树的裸题,只是为了练习splay。详见代码:
/*********************************************************
file name: poj3468.cpp
author : kereo
cre...
分类:
其他好文 时间:
2015-01-29 09:29:13
阅读次数:
178