【每日一题】9月16日题目精讲-Closest Equals

题号 NC110867
名称 Closest Equals
来源 CF522D
戳我进入往期每日一题汇总贴~
往期每日一题二期题单

图片说明

如果你在题库做题时遇到了喜欢的题目,欢迎推荐给邓老师~ 点击查看详情

题解

题意:对一个序列有m组询问,每次询问区间[l,r]内两个相同的数的最近距离是多少。
对于每个元素,我们可以先求出上一个和他一样的数的出现位置记为pre[i]。然后每次查询的时候,查询的是[l,r]区间内pre[i]大于等于l的i-pre[i]的最小值——那么要怎么把pre[i]小于l的点排除在查询外?
将询问离线,按照询问区间的右端点从左到右排序。从左到右扫描,对于每一个i和pre[i]只对l在pre[i]左边的区间有贡献,所以把线段树/树状数组里面pre[i]位置的值改为i-pre[i]即可。然后在扫描中查询区间最小值即可。
也就是说:离线了询问之后,我们每次是把i小于等于r的i和pre[i]纳入了考虑范围,并且因为是按照pre[i]往线段树/数组里面放,这样,查询pre[i]在[l,r]区间内的i-pre[i]的最小值既保证了i在[l,r]范围内也保证了pre[i]在[l,r]范围内。

欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目9月23日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
https://blog.nowcoder.net/n/4f052e714a344cb08f1dd5ab7a6513c5
1 回复
分享
发布于 2020-09-15 16:49
楼上的大佬太强了, %%%%%% https://blog.nowcoder.net/n/c0512e8483974efd8cc92a723251d93b
1 回复
分享
发布于 2020-09-15 17:07
联易融
校招火热招聘中
官网直投
https://blog.nowcoder.net/n/6280c7c12b71400b9b9bcaebca537a0e
1 回复
分享
发布于 2020-09-16 00:11
https://blog.nowcoder.net/n/d78eeffe34a442adbe19610b2b74921f膜拜楼上两巨佬CCCCCCCCCCCCOrz
点赞 回复
分享
发布于 2020-09-15 17:28
https://blog.nowcoder.net/n/d7c99e4d95924f1381a241caaf1f24fb
点赞 回复
分享
发布于 2020-10-04 16:51

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务