![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Splay
Jiahe Xu
为何要去攀登珠穆朗玛峰,因为她就在那里啊.
展开
-
bzoj1588: [HNOI2002]营业额统计 SBT&&Splay
所有操作都有,就当练手吧。。。貌似数据有问题,要特判一下。#include #include #include #include #include #include using namespace std;#define maxn 1000000int root,ls[maxn],rs[maxn],siz[maxn],val[maxn];int n,cnt,m;bool vis原创 2014-12-13 22:32:48 · 689 阅读 · 0 评论 -
bzoj1208: [HNOI2004]宠物收养所 SBT&&Splay
初次写SBT。。。。。感觉sbt跟线段树一样,多写写就熟了。#include #include #include #include #include using namespace std;#define maxn 1100000#define mod 1000000#define INF 1e9int root,siz[maxn],val[maxn],ls[maxn],rs[m原创 2014-12-12 23:18:29 · 858 阅读 · 0 评论 -
bzoj3223: Tyvj 1729 文艺平衡树 splay裸区间旋转
模板题。从0开始到n+2结束。每次把起点前一个点置为跟,右端点的下一个点作为跟的右节点,这样跟的右节点的左节点就是操作的区间,pushdown和pushup和线段树的很类似。#include #include #include #include #include using namespace std;#define maxn 110000int root,siz[maxn]原创 2014-12-22 23:43:26 · 449 阅读 · 0 评论 -
poj3468A Simple Problem with Integers Splay版
练练splay的lazy操作。惊奇的发现在select的时候pushdown效率比一边更新一边pushdown高。。。。#include #include #include #include #include using namespace std;#define maxn 110000typedef long long sint;sint sum[maxn];int lazy[原创 2014-12-23 22:05:13 · 502 阅读 · 0 评论 -
bzoj1014: [JSOI2008]火星人prefix splay
spaly+hash,我的hash方式有点慢。。。。。#include #include #include #include #include using namespace std;#define maxn 200000typedef long long sint;#define mod 9875321int tr[maxn][2],fa[maxn],id[maxn];int原创 2014-12-29 20:47:19 · 1070 阅读 · 0 评论 -
2017东北地区赛D题 splay
题意:25W个序列 支持三个操作:1 给你一个长度为偶数的区间 交换区间相邻的元素 区间里 第1个和第2个换 第3个和第4个换 第5个和第6个换2 给你一个长度为奇数的区间 将区间翻转3 求区间的和题解:将区间元素按下标奇偶分成2个splay 对于第1个操作直接交换区间 第2个操作由于是奇数长度的区间 所以把范围两个splay内的区间直接翻转就好了PS:场上没有想到按奇偶分组原创 2017-05-17 23:29:06 · 536 阅读 · 0 评论 -
LCT介绍
偶然看到了LCT,发现好多东西都忘了,今天就来写写LCT总结吧。LCT=link-cut-tree 在树链剖分里我们把树按dfs序换成连续序列,再来解决树上两点间路径操作的问题。很明显,假如树的结构变了,那么原来的树链剖分就GG了。为了解决可以增边的问题我们引进LCT。LCT的基本思想就是把树链剖分里的重块都存到一颗splay里,以splay的灵活性来解决删边加边的问题(无论原图怎么删都得原创 2017-07-07 20:08:59 · 1198 阅读 · 0 评论 -
spoj-QTREE3 LCT
题目大意:一棵树分为黑点和白点,可以改变一个点的颜色,问从1到v的路径上第一个黑点是哪个点LCT做法:把黑点col记作1,sum[x]记录x点子树右多少个黑点,我们可以用LCT把1到x路径上所有的点组成一个splay,然后在splay上找关键字最小的点就可以了,不难发现这个题就算找路径上第k个点也是很容易实现的。#include using namespace std;#define ma原创 2017-07-08 10:08:46 · 389 阅读 · 0 评论