fhq:我们有一个新的Treap,支持splay的一切操作你怕不怕。。。memphis:我们讲的更详细一点好了 1 /************************************************************** 2 Problem: 3223 3 ...
分类:
其他好文 时间:
2015-02-17 23:33:16
阅读次数:
196
依赖:还是splay。P.S.:热切关心时间复杂度的请退散……蒟蒻布吉岛……
分类:
其他好文 时间:
2015-02-17 22:13:29
阅读次数:
302
维护一个带点权的无向图森林,支持: 1、删边 2、加边 3、增加某条链所有点的点权 4、求某条链上点权的最大值大概思路:前两个需要更改根(即需要翻转标记)第三个又需要一个标记,第四个每个节点记录该splay中以该节点为根的子树的最大点权。收获: 1、对于splay前的标记下传可用递归写法,...
分类:
其他好文 时间:
2015-02-13 23:38:15
阅读次数:
192
是NOI2003Editor的一个子任务 1 #include 2 #include 3 #define maxn 100010 4 using namespace std; 5 6 struct Splay { 7 int pre[maxn], son[maxn][2]...
分类:
其他好文 时间:
2015-02-09 22:56:59
阅读次数:
654
这道题我先写了值域线段树,一直WA,和网上的标程对拍,也拍不出错误,然后改写SPALY,又WA,也拍不出错误,最后只能用vector水过了。我把我写的值域线段树、Splay、vector、数据生成器放在下面,若有哪位好心人愿意帮我看看,感激不尽。值域线段树: 1 /****************....
分类:
其他好文 时间:
2015-02-09 20:12:32
阅读次数:
129
伸展树的介绍1、出处:http://www.cnblogs.com/skywang12345/p/3604238.html伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。(01) 伸展...
分类:
编程语言 时间:
2015-02-09 15:55:43
阅读次数:
260
这题用Splay写得我蛋疼菊紧,4000b的代码还有debug半天,看来我的splay姿势还不够好a = =首先N是很大的,所以离散化是必然的,把要Top操作的和要Query操作的编号单独划分为一个区间,然后再中间会产生其他的区间,把这些区间缩点,然后离散化就好了。三个操作其实不难实现,Top操作只...
分类:
其他好文 时间:
2015-02-07 17:22:38
阅读次数:
222
主要用到的就是一个splay的区间翻转。。感觉像splay这样灵活的数据结构实现区间翻转并不难。。。这题让我主要蛋疼的地方是一开始不知道怎么同时记录这个节点的位置和这个节点的值并且能够相互查找。后来发现傻逼了,由于用的不是指针来实现,节点本身的编号就可以代表节点的位置,由于每个节点里面的值是不会变的...
分类:
其他好文 时间:
2015-02-07 14:29:21
阅读次数:
126
http://codevs.cn/problem/1743/
题解:思路:采用标记的方式减少操作。rev表示该节点及子树需要翻转。如果在kth()查询第k位置的卡片时走到这个节点o,就pushdown(o),把标记传到子节点,反转左右子节点。如果要反转的区间为[l, r],在rever操作中,将l-1伸展到根,再将r 1节点伸展到右节点。那么对应区间可以转化为ch[ch[o][1]][0]节点所...
分类:
其他好文 时间:
2015-02-07 13:17:35
阅读次数:
254
用Splay实现区间增减,查询区间和。要对一个区间进行操作只要先把元素在序列中的位置当做键值建树,然后对l,r操作只要把l - 1 splay到根,r+1 splay到根的右子树,那么r + 1的左子树里面就有这个区间的所有的元素了。对每个节点存一些信息,就可以很方便的处理了。不过这题用splay写...
分类:
其他好文 时间:
2015-02-06 18:27:09
阅读次数:
114