CF1956D.Nene and the Mex Operator

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Nene 给了你一个长度为 nn 的整数数组 a1,a2,…,ana_1, a_2, \ldots, a_n。

你可以进行如下操作,最多不超过 5⋅1055\cdot 10^5 次(也可以一次都不做):

  • 选择两个整数 ll 和 rr,满足 1≤l≤r≤n1 \le l \le r \le n,计算 x=MEX⁡({al,al+1,…,ar})x = \operatorname{MEX}(\{a_l, a_{l+1}, \ldots, a_r\}),然后同时将 al,al+1,…,ara_l, a_{l+1}, \ldots, a_r 全部赋值为 xx。

这里,集合 {c1,c2,…,ck}\{c_1, c_2, \ldots, c_k\} 的 MEX⁡\operatorname{MEX} 定义为集合中没有出现的最小非负整数 mm。

你的目标是最大化数组 aa 所有元素的和。请你求出最大和,并构造一组操作序列使得可以达到这个和。注意,你不需要最小化操作次数,只需保证操作次数不超过 5⋅1055\cdot 10^5 即可。

输入格式

第一行包含一个整数 nn(1≤n≤181 \le n \le 18),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(0≤ai≤1070\leq a_i \leq 10^7),表示数组 aa。

输出格式

第一行输出两个整数 ss 和 mm(0≤m≤5⋅1050\le m\le 5\cdot 10^5),分别表示数组 aa 的最大元素和以及你所用的操作次数。

接下来的 mm 行,每行输出两个整数 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n),表示第 ii 次操作的参数。

可以证明,数组 aa 的最大元素和总能在不超过 5⋅1055 \cdot 10^5 次操作内实现。

输入输出样例

  • 输入#1

    2
    0 1

    输出#1

    4 1
    1 2
  • 输入#2

    3
    1 3 9

    输出#2

    13 0
  • 输入#3

    4
    1 100 2 1

    输出#3

    105 2
    3 3
    3 4
  • 输入#4

    1
    0

    输出#4

    1 1
    1 1

说明/提示

在第一个样例中,经过 l=1l=1 且 r=2r=2 的操作后,数组 aa 变为 [2,2][2,2]。可以证明无法得到更大的数组元素和,所以答案为 44。

在第二个样例中,初始元素和为 1313,可以证明这已经是最大的。

在第三个样例中,数组 aa 的变化如下:

  • 第一次操作(l=3l=3,r=3r=3)后,数组 aa 变为 [1,100,0,1][1,100,0,1];
  • 第二次操作(l=3l=3,r=4r=4)后,数组 aa 变为 [1,100,2,2][1,100,2,2]。

可以证明无法得到更大的数组元素和,所以答案为 105105。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页