#P13693. [CEOI 2025] Equal Mex

[CEOI 2025] Equal Mex

Description

罗马尼亚贵族们普遍认为,一个整数数组 a[0],a[1],a[2],,a[m1]a[0], a[1], a[2], \ldots, a[m - 1]美丽值定义为:满足以下条件的正整数 kk 的个数——你可以将该数组划分为 kk 个互不重叠的子数组(即连续元素的序列),使得:

  1. 每个元素恰好属于一个子数组;
  2. 所有子数组具有相同的最小缺失元素

这里,一个整数数组的最小缺失元素是指数组中没有出现的、严格大于 00 的最小正整数。

给定一个整数数组 v[0],v[1],,v[n1]v[0], v[1], \ldots, v[n - 1],以及 qq 个询问,每个询问的形式为 (li,ri)(l_i, r_i),其中对所有 0i<q0 \leq i < q,均有 1lirin1 \leq l_i \leq r_i \leq n

对于每个询问,你需要求出数组 v[li1],v[li],,v[ri1]v[l_i - 1], v[l_i ], \ldots, v[r_i - 1] 的美丽值。

实现细节

你需要实现如下过程:

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 的数组,其中第 ii 个元素为第 ii 个询问的答案。该过程在每个测试用例中仅调用一次。

10 2
1 1 2 2 3 3 1 2 3 4
1 6
1 9
1
2

Hint

数据范围

  • 1n6000001 \leq n \leq 600000
  • 1q6000001 \leq q \leq 600000
  • 对所有 0i<n0 \leq i < n1v[i]4000001 \leq v[i] \leq 400000
  • 对所有 0i<q0 \leq i < q1lirin1 \leq l_i \leq r_i \leq n

子任务

  1. (4 分)1n10, 1q1001 \leq n \leq 10,\ 1 \leq q \leq 100
  2. (6 分)1n,q1001 \leq n, q \leq 100
  3. (17 分)1n,q10001 \leq n, q \leq 1000
  4. (10 分)1n,q1000001 \leq n, q \leq 100000 且对所有 0i<n0 \leq i < n,有 1v[i]21 \leq v[i] \leq 2
  5. (30 分)1n,q750001 \leq n, q \leq 75000
  6. (33 分)无额外限制

翻译由 ChatGPT-5 完成