因为要讲座,随便写一下,等讲完有时间好好写一篇splay的博客. 先直接上题目然后贴代码,具体讲解都写代码里了. 参考的博客等的链接都贴代码里了,有空再好好写. P2042 [NOI2005]维护数列 题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目. 第 2 行包含 N 个数字,描述初始时的…
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<stack> #define Tp Treap* #define DTp pair<Tp,Tp> #define ft first #define sc second #define INF 0x7f7f7f7f #define MAXN 500000+10 using n…
题目链接 2017.12.24 第一次写: 时间: 2316ms (1268ms) 空间: 19.42MB (19.5MB)(O2) 注:洛谷测的时间浮动比较大 /* 插入一段数:将这些数先单独建一棵平衡树t'.将pos旋到根,pos+1旋到son[root][1],直接将t'放到son[pos+1][0]即可 删除一段数:将要删除区间旋转到r+1的左儿子上,直接删除 统一修改一段数.区间反转:同样,提取修改区间,打标记 区间求和:提取,输出记录的sum 最大子序列:有一种求最大子序列的nlog…
题目大意:维护一个序列,支持区间插入,区间删除,区间翻转,查询区间元素和,查询区间最大子段和操作. 题解:毒瘤题...QAQ打完这道题发现自己以前学了一个假的 Splay.. 对于区间操作,用 splay 处理是比较优先的选择.取出一段区间 [l,r] 的方式为:将 l-1 旋转到根节点,将 r+1 旋转到根节点的右儿子节点,这样根节点的右儿子的左儿子组成的子树即是取出来一段连续区间,可以很方便对区间进行查询或打标记. 需要注意如下几点: Splay 等平衡树不是 leafy tree,即:每个…
到这里 \(A\) 了这题, \(Splay\) 就能算入好门了吧. 今天是个特殊的日子, \(NOI\) 出成绩, 大佬 \(Cu\) 不敢相信这一切这么快, 一下子机房就只剩我和 \(zrs\) 了. 忽然回想起之前大佬的一幕幕, 有一丝惆怅 真的不知道该怎么安慰dalao... 不过上天不会忽视那些默默努力的人的对吧 不想被说做作, 但是如果dalao能看到这篇博客的话, 大佬, 高考加油啊 为什么在这里写这些呢? \(Splay\) 其实是大佬领进门的, 学习的也是大佬的板子, 大佬很久…
P2042 [NOI2005]维护数列 数列区间和,最大子列和(必须不为空),支持翻转.修改值.插入删除. 练码力的题,很毒瘤.个人因为太菜了,对splay极其生疏,犯了大量错误,在此记录,望以后一定要多多回顾!!!! (以后复习splay板子干脆就这道题算了) 1.审题问题(明明就是题目没说清楚的说) 最大子序列和不能为空,也就是必有数,有负数你也得选. 2.思路方面: 关于插入:在要插入的地方通过splay把他腾出空当不就行了.即把k旋到根,k+1旋到右儿子,则k+1左儿子必为空,此时把数列…
P2042 [NOI2005]维护数列 题意 题目描述 请写一个程序,要求维护一个数列,支持以下\(6\)种操作:(请注意,格式栏中的下划线'_'表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第\(1\)行包含两个数\(N\)和\(M\),\(N\)表示初始时数列中数的个数,\(M\)表示要进行的操作数目. 第\(2\)行包含\(N\)个数字,描述初始时的数列.以下\(M\)行,每行一条命令,格式参见问题描述中的表格. 输出格式: 对于输入数据中的GET-SUM和MAX-SUM…
手动博客搬家: 本文发表于20180825 00:34:49, 原地址https://blog.csdn.net/suncongbo/article/details/82027387 题目链接: (luogu) https://www.luogu.org/problem/show?pid=2042 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1500 思路分析: 这个题嘛..思路没啥好说的 用splay每个点维护四个量:\(su…
题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线' _ '表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目. 第 2 行包含 N 个数字,描述初始时的数列. 以下 M 行,每行一条命令,格式参见问题描述中的表格 输出格式: 对于输入数据中的 GET-SUM 和 MAX-SUM 操作,向输出文件依次打印结 果,每个答案(数字)占一行. 输入输出样例 输…
思路 超级恶心的pushdown 昏天黑地的调 让我想起了我那前几个月的线段树2 错误 这恶心的一道题终于过了 太多错误,简直说不过来 pushup pushdown 主要就是这俩不太清晰,乱pushdown 其他的写的还没啥毛病(能看出来) 代码 #include <iostream> #include <cstdio> #include <stack> #include <cstring> #include <algorithm> #defi…