A3686 「CEOI2025」等于 mex

暂无评定 传统题 CEOI(中欧) 上传者
时间限制5000ms
内存限制1024MiB
通过 / 提交0/0

A3686「CEOI2025」等于 mex

暂无评定 传统题 CEOI(中欧) 上传者
时间限制5000ms
内存限制1024MiB
通过 / 提交0/0

注意事项

在 LibreOJ 上,由于语言限制,目前只支持以下语言的提交:

  • C++(标准为 C++ 17 及以上)

请在提交源代码前添加 #include "equalmex.h"。

题目描述

题目译自 CEOI 2025 Day2 T1「Equalmex」

在罗马尼亚贵族中众所周知,一个整数数组 a[0],a[1],a[2],…,a[m−1]a[0], a[1], a[2], \ldots, a[m-1] 的美感是正整数 kk 的数量,对于这些 kk,你可以将数组分成 kk 个不相交的子数组(连续元素的序列),使得每个元素恰好包含在一个子数组中,并且所有子数组具有相同的最小排除元素。整数数组的最小排除元素是不出现在数组中的最小严格正整数(大于 00)。

给你一个整数数组 v[0],v[1],…,v[n−1]v[0], v[1], \ldots, v[n-1] 和 qq 个查询,形式为 (li,ri)(l_{i}, r_{i}),其中对于所有 0≤i<q0 \leq i < q,0≤li≤ri<n0 \leq l_{i} \leq r_{i} < n。

对于每个查询,你需要找到数组 v[li],v[li+1],…,v[ri]v[l_{i}], v[l_{i}+1], \ldots, v[r_{i}] 的美感。

实现细节

你应该实现以下程序:

std::vector<int> solve(
    int n, std::vector<int>& v,
    int q, std::vector<std::pair<int, int>>& queries);
  • nn:整数数组的大小
  • vv:长度为 nn 的数组,初始数组
  • qq:查询数量
  • queriesqueries:长度为 qq 的数组,描述查询
  • 该程序应返回一个长度为 qq 的整数向量,包含每个查询的答案。
  • 对于每个测试点,该程序只被调用一次。

示例评测程序

示例评测程序读取以下格式的输入:

  • 第 11 行:n qn\ q
  • 第 22 行:v[0] v[1] … v[n−1]v[0]\ v[1]\ \ldots\ v[n-1]
  • 第 3+i3+i 行:li ril_{i}\ r_{i} 对于所有 0≤i<q0 \leq i < q

并输出 qq 行,调用函数 solve 的结果,使用相应的参数。

样例 1

考虑以下调用:

solve(10, {1, 1, 2, 2, 3, 3, 1, 2, 3, 4}, 2, {{0, 5}, {0, 8}})

在这个样例中,n=10n=10,有 22 个查询,其中:

  • l0=0l_{0}=0 且 r0=5r_{0}=5
  • l1=0l_{1}=0 且 r1=8r_{1}=8

对于第一个查询,我们只能将区间分成一个子数组,从位置 00 到位置 55。

对于第二个查询,kk 可以是 11 或 22。

将区间分成 11 个子数组的一种可能是选择从位置 00 到位置 88 的子数组。 将区间分成 22 个子数组的一种可能是选择从位置 00 到位置 55 和从位置 66 到位置 88 的子数组。

第一个查询的答案是 11,第二个查询的答案是 22,因此调用 solve 将返回 {1,2}\{1, 2\}。

数据范围与提示

对于所有输入数据,满足:

  • 1≤n≤6000001 \leq n \leq 600000
  • 1≤q≤6000001 \leq q \leq 600000
  • 对于所有 0≤i<n0 \leq i < n,1≤v[i]≤4000001 \leq v[i] \leq 400000
  • 对于所有 0≤i<q0 \leq i < q,0≤li≤ri<n0 \leq l_{i} \leq r_{i} < n

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 44 1≤n≤10,1≤q≤1001 \leq n \leq 10, 1 \leq q \leq 100
22 66 1≤n,q≤1001 \leq n, q \leq 100
33 1717 1≤n,q≤10001 \leq n, q \leq 1000
44 1010 1≤n,q≤1000001 \leq n, q \leq 100000 且对于所有 0≤i<n0 \leq i < n,1≤v[i]≤21 \leq v[i] \leq 2
55 3030 1≤n,q≤750001 \leq n, q \leq 75000
66 3333 无附加限制