欢迎光临散文网 会员登陆 & 注册

记录一个简单的分块题目(https://www.acwing.com/problem/content/251/)

2020-11-26 11:13 作者:_dys_  | 我要投稿

区间众数,不带修改,强制在线(否则可以莫队)。

分块,预处理任意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


待会视频更新,更详细

记录一个简单的分块题目(https://www.acwing.com/problem/content/251/)的评论 (共 条)

分享到微博请遵守国家法律