随笔分类 -  1.1.2伸展树Splay

[HDU3487]Play with Chain
摘要:Problem 有n个数,为1~n。有两种操作: Cut x y z: 把x到y的区间切割下来后,放到改变后的序列的z位后 Flip x y: 把x到y的区间翻转 Solution splay模板题 Notice 注意0 Code C++ include include include includ 阅读全文
posted @ 2017-10-06 13:09 WizardCowboy 阅读(186) 评论(0) 推荐(0)
[HDU3436]Queue-jumpers
摘要:Problem 有一个数列,从1排列到n,然后有Q个操作 1. Top x:将第x个数放到序列的最前面 2. Query x:询问x这个数在第几位 3. Rank x:询问第x位数是什么 Solution n非常的大,需要离散化:读入的Query操作和Top操作需要离散化 然后每当处理一个数时,用二 阅读全文
posted @ 2017-10-06 12:54 WizardCowboy 阅读(176) 评论(0) 推荐(0)
[HDU2475]Box
摘要:Problem 先告诉你每个盒子在哪个盒子的内部 接下来有M个操作: 可以把一个盒子及里面的盒子移到另外一个盒子的内部 或者询问你某个盒子最外面的盒子是哪个 Solution 首先可以建成一个图,然后先dfs一遍,用dfs序加入多棵splay 然后移动操作就是区间切割,询问操作就是这棵splay中最 阅读全文
posted @ 2017-10-06 12:44 WizardCowboy 阅读(176) 评论(0) 推荐(0)
[HDU1890]RoboticSort
摘要:Problem 每次找到最小值,然后把它和它前面的数翻转,然后找第二小数······ 然后输出这些数的下标。 Solution 用splay维护,每次找到最小值,然后翻转前面区间。 Notice 细节操作巨烦无比。 Code C++ include include include include i 阅读全文
posted @ 2017-10-05 12:44 WizardCowboy 阅读(145) 评论(2) 推荐(0)
[BZOJ1500]维修数列
摘要:Problem Solution Splay模板题 要记录从左往右的最大和,从右往左的最大和,整个区间内的最大和 Notice 注意0的大坑。 Code 阅读全文
posted @ 2017-10-05 12:32 WizardCowboy 阅读(288) 评论(0) 推荐(0)
[POJ3580]SuperMemo
摘要:Problem ADD x y D: x到y每个数加上D REVERSE x y: 翻转x到y这个区间 REVOLVE x y T: x到y区间往后旋转T位 INSERT x P: 在第x个数后插入P DELETE x: 删除第x个数 MIN x y: 求x到y的区间最小值 Solution spl 阅读全文
posted @ 2017-10-05 12:29 WizardCowboy 阅读(140) 评论(0) 推荐(0)
[POJ3481]Double Queue
摘要:Problem 0 结束操作 1 K P 将一个数K以优先级P加入 2 取出优先级最高的那个数 3 取出优先级最低的那个数 Solution Splay模板题 Notice 是输出数而不是输出优先级。 Code C++ include include include include include 阅读全文
posted @ 2017-10-05 12:24 WizardCowboy 阅读(163) 评论(0) 推荐(0)
[BZOJ1269]文本编辑器editor
摘要:Problem 有n个操作 Solution splay模板题,用splay维护下标。 Notice 需要把l的前一个位置旋转到根,r的后一个位置旋转到根的右节点。所以特别要注意0的大坑。 Code 阅读全文
posted @ 2017-09-30 15:38 WizardCowboy 阅读(130) 评论(0) 推荐(0)
[BZOJ1208]宠物收养所
摘要:Problem 给你一个宠物或是领养者的特点值。 若是领养者的特点值为a,有宠物的特点值为b,那么他会领养abs(a b)最小的值。(如果有a+k和a k,那么优先领养a k) 同理,若是宠物的特点值为a,有领养者的特点值为b,那么它会被abs(a b)最小的值的领养者领养。(如果有a+k和a k, 阅读全文
posted @ 2017-09-30 08:34 WizardCowboy 阅读(132) 评论(0) 推荐(0)
[BZOJ1588]营业额统计
摘要:Problem 每次给你一个数,找出前面的数与这个数的差的绝对值的最小值 Solution Splay Notice 找不到前驱和后继时,会出错。 Code C++ include include include include include using namespace std; define 阅读全文
posted @ 2017-09-29 20:50 WizardCowboy 阅读(151) 评论(0) 推荐(0)
[BZOJ3224]普通平衡树
摘要:Problem 有以下操作 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6. 求x的后继(后继定义为大于x,且最小的数) Solution 裸的 阅读全文
posted @ 2017-09-29 20:25 WizardCowboy 阅读(144) 评论(0) 推荐(0)