CF1956D.Nene and the Mex Operator
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Nene 给了你一个长度为 n 的整数数组 a1,a2,…,an。
你可以进行如下操作,最多不超过 5⋅105 次(也可以一次都不做):
- 选择两个整数 l 和 r,满足 1≤l≤r≤n,计算 x=MEX({al,al+1,…,ar}),然后同时将 al,al+1,…,ar 全部赋值为 x。
这里,集合 {c1,c2,…,ck} 的 MEX 定义为集合中没有出现的最小非负整数 m。
你的目标是最大化数组 a 所有元素的和。请你求出最大和,并构造一组操作序列使得可以达到这个和。注意,你不需要最小化操作次数,只需保证操作次数不超过 5⋅105 即可。
输入格式
第一行包含一个整数 n(1≤n≤18),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤107),表示数组 a。
输出格式
第一行输出两个整数 s 和 m(0≤m≤5⋅105),分别表示数组 a 的最大元素和以及你所用的操作次数。
接下来的 m 行,每行输出两个整数 l 和 r(1≤l≤r≤n),表示第 i 次操作的参数。
可以证明,数组 a 的最大元素和总能在不超过 5⋅105 次操作内实现。
输入输出样例
输入#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=1 且 r=2 的操作后,数组 a 变为 [2,2]。可以证明无法得到更大的数组元素和,所以答案为 4。
在第二个样例中,初始元素和为 13,可以证明这已经是最大的。
在第三个样例中,数组 a 的变化如下:
- 第一次操作(l=3,r=3)后,数组 a 变为 [1,100,0,1];
- 第二次操作(l=3,r=4)后,数组 a 变为 [1,100,2,2]。
可以证明无法得到更大的数组元素和,所以答案为 105。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?