BZOJ.3920.Yuuna的礼物

题意

给定一个长为\(n\)的序列,每次查询区间中出现次数\(k1\)小的数里面的\(k2\)小的数,要求空间线性

做法

莫队,用\(O(1)\)修改,\(O(\sqrt n)\)查询次数\(k1\)小的,用关于次数的权值分块做
而每个点内再开个关于值的权值分块

这时我们发现被卡空间了,因为权值分块的空间是等于值域的

对于一个值\(x\),其最多出现在\(cnt_x\)(总出现次数),预处理其,放入\([1,cnt_x]\)中,然后对外层分块的内层离散化

原文地址:https://www.cnblogs.com/Grice/p/12254436.html