gym102452H

题意简述

题目链接

给你一个初始各项为空的长度为 n 的序列。

操作有:

  • 在序列第 k 位插入一个数 v
  • 查询 [l,r] 中到 v 最近的数有多近,无数输出 1

多测,n5×105m106

时限 4.5s


思路

这是一个在线做法

我们一眼线段树套 set,似乎秒了?

不幸,我们被卡常了(已经加了火车头、快读)。

set 太慢了,我们手写平衡树?

使用 Splay 后,T 的更加厉害了

考虑换成 yk-BST,虽然复杂度更劣了,但实际更快了。

然而,精细化实现后,我们稳定被卡在了 12 号点。

什么,你说离线?

不必,我们还有 zkw 线段树呀!

为了方便,散装了一个类似于 zkw 线段树的伪迭代版线段树,效率足够了,我们获得了卡线AC

不过还是有一点要注意,就是不要直接开 4×107vector 而应该开指向 BST 的指针,不然光开 vector 的时间就会 T。

代码太丑不放了,自己看吧。

posted @   myee  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示