记录一个简单的分块题目(https://www.acwing.com/problem/content/251/)
区间众数,不带修改,强制在线(否则可以莫队)。
分块,预处理任意2个大块之间的众数(枚举左端点,n*sqrt(n))。询问[l,r]中的众数肯定是大块idl+1~idr-1的众数、或者小块中的某个数。
对于这sqrt(n)个候选答案,需要统计其在询问区间[l,r]内的出现次数,1个做法是用adj[x]记录x的所有出现位置,那么x在[l,r]内的出现次数就是:
upper_bound(adj[x].begin(), adj[x].end(), r) - lower_bound(adj[x].begin(), adj[x].end(), l)
代码如下
https://pasteme.cn/68767
待会视频更新,更详细

