
平衡树
文章平均质量分 54
sancpp
这个作者很懒,什么都没留下…
展开
-
splay板子整理
本质就是个平衡树。具体到一道题,无非就是要考虑如何1.每个节点维护什么信息。2.如何维护splay(top,bottom等splay特色操作)3.如何建树,建树规则如何实现。如何找到需要的节点。4.结合其他数据结构(难)#include <bits/stdc++.h>using namespace std;//-----pre_def----const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;typedef lo原创 2021-07-08 20:46:40 · 245 阅读 · 0 评论 -
CF38G Queue (区间splay)
传送门题意(摘自洛谷)【问题描述】 有n个人依次排队,每个人都有两个属性值 a[i] 、c[i] ,a[i]是重要性值,数值越大越重要,c[i]是良心值。假如前i-1人已经排好队后,第i个人来排队,初始时他在队尾,如果他的a[i]大于排在他前面那位的重要性值,那么两人可以交换位置,每次交换良心值减1,直到他前面的人的重要性值大于a[i]或者良心值为0的时候(即最多交换c[i]次),问最终n个人的队列次序。【输入描述】 第一行一个整数n,表示队列人数。 接下来n行,每行两个整数ai,ci,表示第i个人原创 2021-04-26 21:35:44 · 168 阅读 · 0 评论 -
P3850 [TJOI2007]书架 (splay维护序列)
传送门1.题意Knuth 先生家里有个精致的书架,书架上有 NN 本书,如今他想学到更多的知识,于是又买来了 MM 本不同的新书。现在他要把新买的书依次插入到书架中,他已经把每本书要插入的位置标记好了,并且相应的将它们放好。由于 Knuth 年龄已大,过几天他已经记不清某些位置上放的到底是什么书了,请问你能帮助他吗?2.分析说白了,就是不停的向序列中插入元素(插队)。最后查询第i个位置是什么。splay可以很简单的进行插入操作。3.代码#include <bits/stdc++.h>原创 2021-04-08 20:45:19 · 253 阅读 · 0 评论 -
洛谷P2596 [ZJOI2006]书架(splay)
传送门1.题意第一行有两个整数,分别表示书的个数 n 以及命令条数 m。第二行有 n 个整数,第 i 个整数表示初始时从上向下书第 ii 本书的编号 p_i。接下来 m 行,每行表示一个操作。每行初始时有一个字符串 op。若 op 为 Top,则后有一个整数 s,表示把编号为 s 的书放在最上面。若 op 为 Bottom,则后有一个整数 s,表示把编号为 s 的书放在最下面。若 op 为 Insert,则后有两个整数 s,t,表示若编号为 s 的书上面有 x 本书,则放回这本书时他的上面有原创 2021-04-05 19:34:06 · 174 阅读 · 0 评论