问题描述: 蒜头君有一个长度为 n 的序列 a1,a2,⋯,an,现在他有 m 个问题要问你,每次给你一对 1≤l≤r≤n ,求 al,a(l+1),⋯,ar 的 mex 的值。 mex 的值定义为该...请帮我写出代码
时间: 2024-03-18 11:39:00 浏览: 83
好的,以下是一个 Python 代码实现:
```python
def mex(nums):
# 用一个集合来存储出现过的数
num_set = set(nums)
# 从 0 开始不断尝试找到未出现的最小非负整数
i = 0
while i in num_set:
i += 1
return i
# 处理每个询问
def handle_query(nums, l, r):
# 将 l 不断右移,直到当前的 set 中不包含 nums[l]
while l <= r and nums[l] in num_set:
num_set.remove(nums[l])
l += 1
# 将 nums[l] 插入 set 中
if l <= r:
num_set.add(nums[l])
# 不断将 mex 右移,直到 set 中不包含当前的 mex
while mex(nums[l:r+1] + [mex_val]) in num_set:
mex_val = mex(nums[l:r+1] + [mex_val])
# 更新 mex 值
mex_val = mex(nums[l:r+1] + [mex_val])
# 返回 mex 值和更新后的集合
return mex_val, num_set
def main(nums, queries):
# 对询问按照右端点从小到大排序
queries.sort(key=lambda x: x[1])
# 初始化集合和 mex 值
num_set = set()
mex_val = 0
# 处理每个询问
for l, r in queries:
mex_val, num_set = handle_query(nums, l-1, r-1, num_set, mex_val)
print(mex_val)
```
这个代码中,`mex(nums)` 函数用来计算一个序列的 mex 值,`handle_query(nums, l, r, num_set, mex_val)` 函数用来处理一个询问并返回更新后的集合和 mex 值,`main(nums, queries)` 函数用来处理所有询问。
阅读全文
相关推荐


















