求助,找一道题
  • 板块学术版
  • 楼主robinyqc
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/17 15:30
  • 上次更新2023/10/23 21:20:55
查看原帖
求助,找一道题
338632
robinyqc楼主2023/3/17 15:30

给出序列 AA, 要求支持:

  1. 询问 AlA_lArA_r 中最大的数
  2. 删除 AxA_x, 并且 x+1x+1 以后的元素整体前移
  3. 在末尾增加一个数。

这是我们学校线段树讲义上的题。我知道怎么做了。但是想找一个 OJ 提交,找不到。

这是一些线索(也就是讲义上给的题解):

  • 用 Splay 也是可以的我并没有意见

  • 用线段树记录每个位置的数是否存在, 存在则标为 1, 不存在则 标为 0

  • 当然相应的 l,r 也要修改

  • 转成线段树中第 k 小的数是哪个, 在线段树上二分

if (k <= sum[o]) Query(o << 1, l, mid);
else k -= sum[o], Query(o << 1 | 1, mid + 1, r);
2023/3/17 15:30
加载中...