Luogu5068 [Ynoi2015] 我回来了
题意:对于集合
每轮操作将
中的数全部减 (常数),并删除所有 的数。 若某一轮减完后,没有
的数,则停止操作。
定义
维护集合
向
中插入数 。 查询
的值。
允许离线,
对于每个
总块数是
由于只有插入,有值的极长块前缀单调增长。
每次插入只需快速找出新增的有值的块,然后尝试极长块前缀,在树状数组上单点修改。树状数组的复杂度为均摊
接下来考虑如何求新增的有值的块。
注意到允许离线,问题可以转化为求每个块第一次有值的时间。
记
综上,时间复杂度为