题意简述
我们定义数组中的最大出现重复值 (Maximum Appearing Duplicate, 简称 MAD) 为数组中出现至少两次的最大的数字。如果数组中没有任何数字出现至少两次,那么 MAD 的值为 0。
例如:
- $\operatorname{MAD}([1, 2, 1]) = 1$
- $\operatorname{MAD}([2, 2, 3, 3]) = 3$
- $\operatorname{MAD}([1, 2, 3, 4]) = 0$
给定一个大小为 $n$ 的数组 $a$。初始时,一个变量 $\text{sum}$ 设为 $0$。
按如下过程循环直到数组 $a$ 中所有数字都变为 $0$:
- 设 $\text{sum} := \text{sum} + \sum\limits_{i=1}^{n} a_i$;
- 令数组 $b$ 的大小为 $n$。设 $b_i := \operatorname{MAD}([a_1, a_2, \ldots, a_i])$ 对于所有的 $1 \le i \le n$,然后设 $a_i := b_i$ 对于所有的 $1 \le i \le n$。
求最终过程结束后的 $\text{sum}$ 的值。
思路分析
这种题,一眼就能看出来暴力做法就是纯模拟。
但是这种题基本都会隐含一些规律性的东西,可以将暴力做法引向正解。
比如此题。
考虑暴力模拟一次这一串操作。
容易发现,我们得到了一个单调不降的数组。
由于原数组无序,所以我们得到的这个数组不一定所有数字都出现了至少两次。
例如,如果原数组为 4 1 5 1 3 3 3 4 5
那么一次操作后能得到 0 0 0 1 3 3 3 4 5
。
但是,对得到的数组再进行一次操作,就能确保除末尾数字,每个数字都至少出现了两次。
如 0 0 0 1 3 3 3 4 5
再进行一次操作可得 0 0 0 0 0 3 3 3 3
。
此时得到的数组,再进行操作仅会使其向右移动一格,数字的相对关系不再变化。
所以此时,处在第 $i$ 位上的数字会被计算 $N-i+1$ 次。
所以此时,第 $i$ 位上的数字对结果的贡献为 $a_i \times (N-i+1)$。
前两次操作直接求即可。