洛谷 P3391 【模板】文艺平衡树】的更多相关文章

题目链接 //注意建树 #include<cstdio> #include<algorithm> const int N=1e5+5; //using std::swap; int n,m,root,t[N],sz[N],son[N][2],fa[N]; bool tag[N]; inline void Update(int rt) { sz[rt]=sz[son[rt][0]]+sz[son[rt][1]]+1; } inline void Down(int rt) { tag[…
题目链接 Splay基础操作 \(Splay\)上的区间翻转 首先,这里的\(Splay\)维护的是一个序列的顺序,每个结点即为序列中的一个数,序列的顺序即为\(Splay\)的中序遍历 那么如何实现区间翻转呢? 对于一次区间翻转操作\(rev(l,r)\),显然先要找到\(l\)和\(r\)在\(Splay\)中的位置 然后把\(l-1\) \(splay\)到根结点,再把\(r+1\) \(splay\)到\(l\)的右儿子的位置 那么区间\([l,r]\)就到了一个子树上,即\(ch[r+…
题目链接 第一次写(2017.11.7): #include<cstdio> #include<cctype> using namespace std; const int N=1e5+5,INF=1e9; int size,root,t[N],sz[N],son[N][2],fa[N],cnt[N]; inline int read() { int now=0,f=1;register char c=getchar(); for(;!isdigit(c);c=getchar())…
题目链接 第一次(2017.12.24): #include<cstdio> #include<cctype> #include<algorithm> //#define gc() getchar() #define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++) const int N=1e5+5,MAXIN=2e6; char IN[MAXIN],*SS=IN,…
#include<bits/stdc++.h> using namespace std; #define maxn 200000 int read() { ,w=; ;ch=getchar();} +ch-';ch=getchar();} return f*w; } int n,root,m,tot; struct sj { ]; //左儿子和右儿子 int ff,v; //ff是父亲 v int size; //size是儿子节点个数 int mark; //打上的标记 void init(…
题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 输入输出格式 输入格式: 第一行为n,m n表示初始序列有n个数,这个序列依次是(1,2,⋯n−1,n)  m表示翻转操作次数 接下来m行每行两个数 [l,r]数据保证 1≤l≤r≤n 输出格式: 输出一行n个数字,表示原始序列经过m次变换后的结果…
[阶梯报告]洛谷P3391[模板]文艺平衡树 splay 题目链接在这里[链接](https://www.luogu.org/problemnew/show/P3391)最近在学习splay,终于做对了这道模版题,虽然不是很难的样子.~~但是我一开始并不会做,而且看完题解之后还打错一直打不对,调试了很久~~下面是题目简述 现在给你一个长度为n的序列,序列元素初始为1,2,3...n,同时有m个操作,每个操作给定一个L和R,表示将[L,R]区间的数进行翻转. 输出:完成所有操作之后的序列(n,m≤…
初识splay 学splay有一段时间了,一直没写...... 本题是splay模板题,维护一个1~n的序列,支持区间翻转(比如1 2 3 4 5 6变成1 2 3 6 5 4),最后输出结果序列. 模板题嘛......主要了解一下splay的基本操作QwQ 原题地址链接[洛谷P3391文艺平衡树] 1.基本概念 splay是一种二叉搜索树,节点的权值满足lson<p<rson,故可以像其他二叉搜索树一样在树上二分查找某数排名,排名为k的数,以及前驱后继等. 普通的二叉搜索树在面对特殊数据时树…
题目传送门 转载自https://www.cnblogs.com/yousiki/p/6147455.html,转载请注明出处 经典引文 空间效率:O(n) 时间效率:O(log n)插入.查找.删除 创造者:Daniel Sleator 和 Robert Tarjan 优点:每次查询会调整树的结构,使被查询频率高的条目更靠近树根. Tree Rotation   树的旋转是splay的基础,对于二叉查找树来说,树的旋转不破坏查找树的结构.   Splaying   Splaying是Splay…
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:…