0%

CF1990C Mad MAD Sum

题意简述

我们定义数组中的最大出现重复值 (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$:

  1. 设 $\text{sum} := \text{sum} + \sum\limits_{i=1}^{n} a_i$;
  2. 令数组 $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)$。

前两次操作直接求即可。