[BZOJ3678]wangxz与OJ Description 某天,wangxz神犇来到了一个信息学在线评测系统(Online Judge).由于他是一位哲♂学的神犇,所以他不打算做题.他发现这些题 目呈线性排列,被标记为1~n号,每道题都有一个难度值(可以<=0).他决定与这些题目玩♂耍. 1.他可以在某个位置插♂入一些难度值特定的题目. 2.他可以吃♂掉(删除)一段题目. 3.他可以查询某个位置的题目的难度值. 维护一个初始有n个元素的序列(标记为1~n号元素),支持以下操作: 0 p a…
题面 维护一个序列,支持以下操作: 1.在某个位置插入一段值连续的数. 2.删除在当前序列位置连续的一段数. 3.查询某个位置的数是多少. 题解 显然平衡树,一个点维护一段值连续的数,如果插入或者删除操作需要分裂这个点,就直接分裂.每次插入最多只会分裂1个点,每次删除最多分裂2个点,所以时间复杂度是O(nlogn)O(nlogn)O(nlogn)的. 我写的无旋treap. CODE #include <bits/stdc++.h> using namespace std; inline vo…
splay缩点. #include<bits/stdc++.h> #define L(t) (t)->c[0] #define R(t) (t)->c[1] #define F(t) (L(t)->s+1) #define G(t) (L(t)->s+(t)->u) #define M (l+r>>1) struct node{ int v,s,u; node* c[2]; node(int v,int s,int u,node* a,node* e)…
3678: wangxz与OJ Time Limit: 10 Sec  Memory Limit: 128 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id=3678 Description 某天,wangxz神犇来到了一个信息学在线评测系统(Online Judge).由于他是一位哲♂学的神犇,所以他不打算做题.他发现这些题 目呈线性排列,被标记为1~n号,每道题都有一个难度值(可以<=0).他决定与这些题目玩♂耍. 1.他可以在某个位置插♂入…
洛谷P3285 [SCOI2014]方伯伯的OJ 动态开点平衡树 题目描述 方伯伯正在做他的 \(Oj\) .现在他在处理 \(Oj\) 上的用户排名问题. \(Oj\) 上注册了 \(n\) 个用户,编号为 \(1 \sim n\),一开始他们按照编号排名. 方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号: \(1\).操作格式为 \(1\ x\ y\),意味着将编号为$ x$ 的用户编号改为 \(y\) ,而排名不变,执行完该操作后需要输出该用户在队列中的位置,数据保证 \(…
Description 传送门 Solution 直接splay搞定吧..似乎非旋treap也ok? 我已经菜到模板题都写不出来了qaq Code #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; ]; struct Splay { ; ][],num[][],sz[],fa[]; ]]+sz[ch[k][]]+num[k][]…
Portal -- > bzoj 3678 Solution 这题==真实智力康复qwq 然而众多神犇都说是10min写完的题我..可能写了近1h吧==深深感受到自己的弱小qwq (丢上来是因为..我的splay实在是太垃圾了==) 其实就是splay的裸题啊qwq(然后因为过于不熟练导致写了巨久==)然后的话不同的地方就是插入的时候你不能一个一个往里面插..因为插入的是连续的一段数,我们考虑直接将这段数存在一个点里面,在需要用其中的某个位置的时候再把这个位置分离出来 具体实现的话就是每个节点维…
题意: 不想讲 题解: Rope真香! 正解是Splay缩点,访问时再拆成一个序列 代码: //STL dafa good! #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #include<ext/rope> #define inf 2147483647 #d…
Description 方伯伯正在做他的Oj.现在他在处理Oj上的用户排名问题. Oj上注册了n个用户,编号为1-”,一开始他们按照编号排名.方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和编号: 1.操作格式为1 x y,意味着将编号为z的用户编号改为V,而排名不变,执行完该操作后需要输出该用户在队列中的位置,数据保证x必然出现在队列中,同时1,是一个当前不在排名中的编号. 2.操作格式为2 x,意味着将编号为x的用户的排名提升到第一位,执行完该操作后需要输出执行该操作前编号为z用户…
LINK:方伯伯的OJ 一道稍有质量的线段树题目.不写LCT splay这辈子是不会单独写的 真的! 喜闻乐见的是 题目迷惑选手 \(op==1\) 查改用户在序列中的位置 题目压根没说位置啊 只有排名和编号 LOJ上写的是 用户在排名中的位置. 这说的不就是排名么. 至此四个操作 分别为 修改编号查排名 查排名修改排名为第一位 查排名修改排名到最后一位 查排名为k的编号. splay的做法 大概是分裂splay和动态开点splay 很好都不会. 直接考虑线段树 因为可以注意到操作只有1e5个…
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 Input 第一行为n,m n表示初始序列有n个数,这个序列依次是(1,2……n-1,n)  m表示翻转操作次数 接下来m行每行两个数[l,r] 数据保证 1<=l<=r<=n Output 输出一行n个数字,表示原始序列经过m次变换后的结果 Sample Input 5 3 1 3…
口诀: $rotate$:先上再下,最后自己 $splay$:祖父未到旋两次,三点一线旋父亲,三点折线旋自己. $delete$:没有儿子就删光.单个儿子删自己.两个儿子找前驱. 易错点: $rotate$:祖父不在自己做根 $delete$:自己做根父亲为0 $kth$:先减排名后转移 /*By DennyQi 2018*/ #include <cstdio> #include <queue> #include <cstring> #include <algor…
解题关键:splay模板题整理. 如何不加入极大极小值?(待思考) #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #include<cstdlib> using namespace std; typedef long long ll; ; ],par[N],val[N],cnt[N],size[N]…
Hihocoder 1329 平衡树·Splay(平衡树) Description 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. 小Hi:怎么了? 小Ho:小Hi你也知道,我平时运气不太好.所以这也反映到了我写的Treap上. 小Hi:你是说你随机出来的权值不太好,从而导致结果很差么? 小Ho:就是这样,明明一样的代码,我的Treap运行结果总是不如别人.小Hi,有没有那种没有随机因素的平衡树呢? 小Hi:当然有了,这次我就跟你讲讲一种叫做Splay的树吧…
前言 原本以为\(Treap\)已经很难了,学习了\(Splay\),我才知道,没有最难,只有更难.(强烈建议先去学一学\(Treap\)再来看这篇博客) 简介 \(Splay\)是平衡树中的一种,除了平衡树所共有的作用之外,它还可以维护区间翻转,这也是它能成为\(LCT\)辅助树的原因(不过\(LCT\)并不是这篇博客所探讨的内容). 因此,这篇博客将分为三个部分,第一个部分讲讲\(Splay\)与其他平衡树的不同之处,另外两个部分则分别借助两道模板题,来讲讲\(Splay\)两方面的作用.…
splay 一种平衡树,同时也是二叉排序树,与treap不同,它不需要维护堆的性质,它由Daniel Sleator和Robert Tarjan(没错,tarjan,又是他)创造,伸展树是一种自调整二叉树,它会将一个节点沿着到根的路径旋转上去. 空间效率:On 摊平时间效率:Ologn 建议先学会treap treap(小根堆)模板 - yi_fan0305 - 博客园 (cnblogs.com) treap(大根堆)模板 - yi_fan0305 - 博客园 (cnblogs.com) 存储结…
以此文纪念人生首次竞赛大选 这里主要讲一讲splay的区间操作,我讲的是指针实现,程序的效率可能比较低,更偏重代码的可读可写性,语言风格不是很优美有效,不喜勿喷 零.初始化结构体 1)这里主要是初始化结构体,记得先生成一个null节点指针,代表一切未使用的.未开发的节点,root也先赋值为null 2)结构体成员:有几个指针,如父亲(没有也可以,只不过令splay失去一些平衡树的功能),左右儿子,这里用数组记录,下标为0,1,方便我们操作 有几个需要维护的域,如size,子树和根的大小(包括重复…
Play with Chain Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) [Problem Description] YaoYao is fond of playing his chains. He has a chain containing n diamonds on it. Diamonds are numbered from 1 to n. At first, t…
学习Splay的时候参考了很多不同的资料,然而参考资料太杂的后果就是模板调出来一直都有问题,尤其是最后发现网上找的各种资料均有不同程度的错误. 好在啃了几天之后终于算是啃下来了. Splay也算是平衡树的一种,但是跟AVL树.SBT不同的是,Splay并不是一直保持严格的平衡,因此在速度上可能要慢一些,但是统计学上仍能保证Splay具有O(logn)的均摊复杂度. Splay原生不需要附加任何空间,它的先天优势是其特有的Splay操作可以非常灵活地改变整棵树的结构形态,完成一般线段树.平衡树做不…
胡扯 因为先学习的treap,而splay与treap中有许多共性,所以会有很多地方不会讲的很细致.关于treap和平衡树可以参考这篇博客 关于splay splay,又叫伸展树,是一种二叉排序树,它能在O(log n)内完成插入.查找和删除操作.它由Daniel Sleator和Robert Tarjan创造.伸展树是一种自调整形式的二叉查找树,它会沿着从某个节点到树根之间的路径,通过一系列的旋转把这个节点搬移到树根去. splay与其他平衡树相比功能更加强大,可以处理区间问题.可以说其他平衡…
◆学时·VI◆ SPLAY伸展树 平衡树之多,学之不尽也…… ◇算法概述 二叉排序树的一种,自动平衡,由 Tarjan 提出并实现.得名于特有的 Splay 操作. Splay操作:将节点u通过单旋.双旋移动到某一个指定位置. 主要目的是将访问频率高的节点在不改变原顺序的前提下移动到尽量靠近根节点的位置,以此来解决同一个(相似)问题的多次查询. 但是在非降序查询每一个节点后,Splay 树会变为一条链,降低运算效率. ◇原理&细解 (1)旋转操作 二叉排序树必须满足 左儿子<根节点<右…
Splay是众多平衡树之一,它的功能十分强大,但常数极大.在LCT和许多数据结构中都能用到. Splay的核心操作,就是rotate.为了使树不是一条链,而是平衡的,我们需要旋转来维护形态.理论很简单,下面来看一下如何实现. 图片转自洛谷 我们注意到,旋转之后,这棵树依然保持着正常的大小关系. 来尝试着写代码. 观察到,y的c儿子依旧是y的右儿子,而x,y的父子关系发生了改变,x的左儿子不变,x的右儿子变成了y的左儿子. 这是右旋. 明显的,我们发现不只有这一种情况.单旋的Splay,会被出题人…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
好久没打模拟赛了...今天一样是两道国集,一道bzoj题 成绩:13+0+95=108 A题开始看错题了...导致样例都没看懂,结果xfz提醒我后我理解了一个我自认为正确的题意(事实证明我和xfz都错了qwq),然后瞎打了一个线段树,结果只有13分...C题一看就是一个大平衡树,开始手打了100+行发现自己肯定调不出来,于是……Rope真香 A:[arc067f]yakiniku restaurants B:[agc010d]decrementing(咕) C:[BZOJ3678]Wangxz和…
NOIP考点 基础算法 图 树 数论 数据结构 动态规划 搜索 其他算法 省选知识点汇总 图论 数据结构 字符串相关算法及数据结构 数学 计算几何 搜索 动态规划 其他算法 转自:巨佬的博客 加*号是选学,加粗为重点,重要值排序不分先后 NOIP考点 基础算法 贪心.枚举.分治.二分.倍增.*构造.高精.模拟.图论 图 最短路(dijkstra.spfa.floyd),差分约束 最小生成树(kruskal.prim) 并查集(扩展域) 拓扑排序 二分图染色,*二分图匹配 tarjan找scc.桥…
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数表示 N个节点上的权值. 接下来 M行,每行包含两个整数x和 y,表示初始的时候,点x和点y 之间有一条无向边, 接下来 T行,每行描述一个操作,格式为"Q x y k"或者"L x y ",其含义见题目描述部分. Output 对于每一个第一类…
题目背景 动态树 题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和.保证x到y是联通的. 1:后接两个整数(x,y),代表连接x到y,若x到y已经联通则无需连接. 2:后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在. 3:后接两个整数(x,y),代表将点x上的权值变成y. 输入输出格式 输入格式: 第1行两个整数,分别为n和m,代表点数和操…
前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次(感觉自己废掉了). 好吧,第一次写挂是因为数组开小了,第二次写挂是因为没有特判\(1\)不是质数... ... class Class_LineSiever { private: #define PrimeSize 1000000 bool IsNot[PrimeSize+5]; public: i…
shenben已经AFO!!! 部分摘抄自网络 同样的,加粗是重点,星号是选学 图论 网络流(dinic,ISAP选一个,费用流写EK就行.*zkw费用流),二分图 点分治,边分治,*动态点分治 树链剖分,动态树(弃疗),树分块 //round2 再搞LCT吧 虚树,*prufer编码 *仙人掌算法 数据结构 带权并查集 Splay(作为平衡树和维护区间),Treap,替罪羊树 线段树(权值线段树),树状数组,*线段树合并 树套树 主席树,可持久化trie,*其它可持久化数据结构 二维线段树,*…
听说很对劲的太刀流不止会splay一种平衡树,并不对劲的片手流为了反驳他,并与之针锋相对,决定学学高端操作. 很对劲的太刀流-> 据说splay常数极大,但是由于只知道splay一种平衡树能对序列进行操作,或者进行分裂合并,还不能不写它. 那么常数略小的treap能否对序列操作或者分裂合并呢?想必是能的. 这就是fhq大神的可分裂与合并的treap(据说国家队人手一个自创算法?那必须的不然ctsc论文答辩怎么过). 它并没有比treap多出什么,反而省了好多事.核心操作只有split和merge…