
fhq Treap
丰川样子小孩姐
阿里嘎多扩赛以马斯
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[题解]LuoGu4146:序列终结者
原题传送门 序列终结者,用它来终结我这一阶段SplaySplaySplay的练习再好不过了。。 三个操作,区间加,区间翻转,区间最值 最近以Splay为核心,看到翻转就想到用Splay,加和翻转用懒标记可以解决,同时可以维护一个最值,由pushup来更新size和mx(区间最值数组) Code: #include <iostream> #include <cstdio> ...原创 2019-06-02 13:01:50 · 399 阅读 · 0 评论 -
[题解]LuoGu2343:宝石管理系统
原题传送门 一眼树状数组水过, 然后发现可以用splaysplaysplay 就来练手啦 十分基本的insert与kth操作 然后因为查询的是第k大,所以我改了一下kth 本来是先跟左儿子的size比较,现在我先跟右儿子的size比较 因为“左中右”的遍历出来结果是从小到大的 那么我“右中左”出来就是从大到小的 Code: #include <bits/stdc++.h> #defin...原创 2019-05-21 18:59:49 · 305 阅读 · 0 评论 -
[题解]LuoGu2073:送花
原题传送门 可以用来练手splay 需要以下: insert(x)insert(x)insert(x):往下跑,若跑到空点,新开一个;若有重复,return Min()Min()Min():找到树中最便宜的点的编号,只要一直往左儿子跑就行了 Max()Max()Max():找到树中最昂贵的点的编号,只要一直往右儿子跑就行了 pre()pre()pre():找前驱 del(x)del(x)del(...原创 2019-05-20 21:23:13 · 360 阅读 · 0 评论 -
[题解]LuoGu2234:[HNOI2002]营业额统计
原题传送门 法1 Splay 每次insert之后,当前点已经旋到根,找到前驱后继,减一减计较,较小的那个统计到ans里 码量太长弱点~~ Code: #include <bits/stdc++.h> #define maxn 100010 #define LL long long using namespace std; int rt, sz, f[maxn], val[maxn],...原创 2019-06-04 18:57:10 · 365 阅读 · 0 评论 -
[题解]LuoGu1486:[NOI2004]郁闷的出纳员
原题传送门 四个操作 I k:插入值为k的节点 A k:所有节点+k S k:所有节点-k F k:所有节点kth 同时任何时刻,节点值<min时,删除节点 第一眼简直线段树,标记没问题,但是本题需要动态删点,线段树无法完成 需要平衡树 依然标记 思想,全局开一个delta变量 加减直接统计到delta里 四个操作可以这样完成: I k:insert(k−delta)insert(k-...原创 2019-05-20 20:10:01 · 345 阅读 · 0 评论 -
[题解]LuoGu3644:[APIO2015]八邻旁之桥
原题传送门 APIO的题目不难啊 首先,家和办公室在河同侧的直接走吧 需要过河的拿出来算 k=1情况 一座桥的话,桥肯定要建在中间(没毛病) 然后家的位置和办公室的位置的话,因为在两岸,可以令起点的位置是较小的那个,便于计算 然后设桥的位置为a,家和桥的位置都为xix_ixi,距离和就是abs(xi−a)abs(x_i-a)abs(xi−a) a取xix_ixi的中位数就行啦 k=2情况 枚...原创 2019-06-11 17:26:46 · 321 阅读 · 0 评论 -
[题解]LuoGu3466:[POI2008]KLO-Building blocks
原题传送门 转化题意: 选一段长度为k的连续区间,使得区间内每个数减去中位数的差的绝对值之和最小 当然是枚举区间啦,然后O(logn)O(logn)O(logn)求出当前区间每个数减去中位数的差的绝对值之和 工具?fhq Treap! pushup里面加维护一个sum就好啦 Code: #include <bits/stdc++.h> #define maxn 100010 #defi...原创 2019-06-11 19:24:32 · 312 阅读 · 0 评论 -
[学习笔记]fhq Treap
1、引入 前置知识:堆(不需要会Treap,或者说根本不用会Treap) 我发现目前用Splay的题目都可以用fhq(不排除我见识短浅的可能) 主要两个特点: 整棵树满足二叉搜索树性质:左儿子小于自己,右儿子大于自己 整棵树满足堆的性质:每个点附带一个值keykeykey,值为随机,以key满足堆(可以默认大根堆) 2、操作 新开一个节点 int addnode(int x){ ++s...原创 2019-06-11 21:32:34 · 446 阅读 · 1 评论