「ZJOI2008」树的统计-树链剖分
· ✏️ 1230 words · ☕ 3 mins read
给定一颗 $n$ 个节点的树,节点编号为 $1$ 到 $n$ ,每个节点都有一个权值 $w_i$ 。
有以下三种操作或询问:
I. CHANGE u t
: 把结点 $u$ 的权值改为 $t$
II. QMAX u v
: 询问从点 $u$ 到点 $v$ 的路径上的节点的最大权值
III. QSUM u v
: 询问从点 $u$ 到点 $v$ 的路径上的节点的权值和
给定一颗 $n$ 个节点的树,节点编号为 $1$ 到 $n$ ,每个节点都有一个权值 $w_i$ 。
有以下三种操作或询问:
I. CHANGE u t
: 把结点 $u$ 的权值改为 $t$
II. QMAX u v
: 询问从点 $u$ 到点 $v$ 的路径上的节点的最大权值
III. QSUM u v
: 询问从点 $u$ 到点 $v$ 的路径上的节点的权值和
有一个长度为 $n$ 的整数序列,并且有以下三种操作:
INSERT i k
:在原数列的第 $i$ 个数后面添加一个新数 $k$ ;如果原数列的第 $i$ 个数已经添加了若干数,则添加在这些数的最后
MIN GAP
:查询相邻两个数的之间差值(绝对值)的最小值
MIN SORT GAP
:查询所有数中最接近的两个数的差值(绝对值)
维护一个数列,给定初始的 $n$ 个数字。
现有六种命令:
非旋 Treap ,是一种不基于旋转的平衡树。它基于 Treap 的树堆思想,并且能够高效的完成某些对区间的操作,而且灵活性比较高。它也可以进行可持久化的操作。
初始时,第 $i$ 号战舰处于第 $i$ 列 $(i = 1, 2, …, 30000)$ 。
有两种指令:
合并指令为 M i j
,含义为将第 $i$ 号战舰所在的整个战舰队列,作为一个整体(头在前尾在后)接至第 $j$ 号战舰所在的战舰队列的尾部。
询问指令为 C i j
。该指令意思询问第 $i$ 号战舰与第 $j$ 号战舰当前是否在同一列中,如果在同一列中,那么它们之间布置有多少战舰。
维护一个序列,第 $i$ 次操作时寻找第i小的数的所在位置 $P_i$,并将 $(P _ {i-1},P _ {i}]$ 的区间翻转。
如果有相同的数,必须保证排序后它们的相对位置关系与初始时相同。
维护一个数列。
现有四种命令,新加入一个数 $k$ ,把每个数加上 $k$ ,把每个数减去 $k$ ,查询第 $k$ 大的数。如果数列中的任意数小于 $min$ ,将它立即删除。并在最后输出总共删去的数的个数 $res$ 。
如果新加入的数 $k$ 的初值小于 $min$ ,它将不会被加入数列。