Trick 记录:「极短 mex 区间」
Trick 记录:「极短 区间」
我觉得这个很有意思,所以决定记一下。
就是,做完找紫色数据结构做一下,然后翻到了 P10169。
给定序列
和 ,求有多少子区间 满足 。
定义为集合内没有出现过的最小的非负整数。
想了 0.67h 没想出来,推出了一些关键性质,但是还是不会单
然后知道了一个很强大的性质:
- 定义「极短
区间」为满足如下性质的区间:设 的区间 , 为「极短 区间」当且仅当不存在区间 满足 的区间 。 - 则对任意数列「极短
区间」的数量是 级别的,具体地,有个上界 。
考虑证明。设
考虑找出所有的极短区间。
前置知识:主席树求区间
但是我复习的时候肯定会重新看所以一句话描述一下:每个点维护当前权值最后出现的位置然后树上二分即可。
假设我们找到了
有个显然的结论是
维护一个 vector 作为极短区间候选。那么求出一个
因为极短区间的数量是
这样我们就在
再定义「极长
考虑求出极短极长区间得到了什么。实际上,设
P9970 [THUPC 2024 初赛] 套娃
我们定义一个集合的
是最小的不在 中的非负整数。 给定一个序列
,对于每个 ,我们按照如下方式定义 :
- 对于
的所有长为 的子区间,求出这个子区间构成的数集的 。 - 对于求出的所有
,求出这个数集自己的 ,记为 。 请你求出序列
。
曾经和 SError_ 大蛇和 大眼仔Happy 大神打过的一场,但是当时没人去细想这个题。
根据上面的结论其实是很好做的。考虑每个长度对应的可重集。对于对应的
用 set 动态地维护当前未出现在集合中的数即可。由于可能会出现重复,因此可以选择用 multiset 或者开桶记录出现次数。
记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
P10169 [DTCPC 2024] mex,min,max
给定序列
和 ,求有多少子区间 满足 。
定义为集合内没有出现过的最小的非负整数。
这场好像我也打过,只是我还是没有去开这道题所以没印象了。
注意到
设
考虑怎么求
这样的做法可以保证答案不漏,但无法保证不重。
发现每次形如钦定一个矩形合法,因此对所有矩形扫描线求面积并即可。
码量还是挺大的,但是很好调,至少我一写完代码就直接过样例了,改了下 RE 和 MLE 就过了(
本文作者:AzusidNya の 部屋
本文链接:https://www.cnblogs.com/AzusidNya/p/18451578
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步