题解、Writeup、游记和碎碎念
包含标签 树状数组 的文章
给定一个长度为 n 的正整数数列 a[i]。
定义 2 个位置的 graze 值为两者位置差与数值差的和,即 graze(x,y)=|x-y|+|a[x]-a[y]|。
2 种操作(k 都是正整数):
1.Modify x k:将第 x 个数的值修改为 k。
2.Query x k:询问有几个 i 满足 graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要考虑任意历史版本,即统计任意位置上出现过的任意数值与当前的 a[x]的 graze 值<=k 的对数。(某位置多次修改为同样的数值,按多次统计)
给一个长为 n 的序列 a,每个数在 0 到 v - 1 之间,有 m 次操作。
操作 1:每次询问一个区间中是否可以选出两个下标的集合 X,Y,满足:
1.X 和 Y 没有交集 2.设集合 X 中有一个元素是 i,则其对集合 X 的贡献是 a[i] + 1,要求集合 X 的元素的总贡献和集合 Y 的元素的总贡献
相等如果可以选出这两个集合,输出 Yuno 否则输出 Yuki
操作 2:修改一个区间 l,r 之间的数,使得所有 l <= i <= r,a[i] = a[i] * a[i] * a[i] % v ,即区间立方
您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询 k 在区间内的排名 2.查询区间内排名为 k 的值 3.修改某一位值上的数值 4.查询 k 在区间内的前驱(前驱定义为小于 x,且最大的数) 5.查询 k 在区间内的后继(后继定义为大于 x,且最小的数)