CF1728F Fishermen

题目描述

有 $n$ 个渔夫刚刚结束了一次钓鱼之旅。第 $i$ 个渔夫钓到了一条大小为 $a_i$ 的鱼。 渔夫们将选择一个顺序来依次报出他们钓到的鱼的大小(顺序即为 $n$ 的一个排列)。然而,他们并不完全诚实,他们可能会“夸大”自己钓到的鱼的大小。 具体来说,假设渔夫们选择的顺序为 $[p_1, p_2, p_3, \dots, p_n]$。设 $b_i$ 表示顺序中第 $i$ 个渔夫报出的鱼的大小。$b_i$ 的取值规则如下: - 顺序中的第一个渔夫会如实报出自己钓到的鱼的大小,即 $b_1 = a_{p_1}$; - 其余每个渔夫都希望报出的数值严格大于前一个渔夫报出的数值,并且能被自己钓到的鱼的大小整除。也就是说,对于 $i > 1$,$b_i$ 是满足 $b_i > b_{i-1}$ 且 $a_{p_i} \mid b_i$ 的最小整数。 例如,设 $n = 7$,$a = [1, 8, 2, 3, 2, 2, 3]$。如果选择的顺序为 $p = [1, 6, 7, 5, 3, 2, 4]$,则: - $b_1 = a_{p_1} = 1$; - $b_2$ 是大于 $1$ 且能被 $2$ 整除的最小整数,为 $2$; - $b_3$ 是大于 $2$ 且能被 $3$ 整除的最小整数,为 $3$; - $b_4$ 是大于 $3$ 且能被 $2$ 整除的最小整数,为 $4$; - $b_5$ 是大于 $4$ 且能被 $2$ 整除的最小整数,为 $6$; - $b_6$ 是大于 $6$ 且能被 $8$ 整除的最小整数,为 $8$; - $b_7$ 是大于 $8$ 且能被 $3$ 整除的最小整数,为 $9$。 你需要选择一种渔夫报数的顺序,使得 $\sum\limits_{i=1}^{n} b_i$ 的值尽可能小。

输入格式

第一行包含一个整数 $n$($1 \le n \le 1000$),表示渔夫的数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^6$)。

输出格式

输出一个整数,表示通过最优顺序能得到的最小可能的 $\sum\limits_{i=1}^{n} b_i$。

说明/提示

由 ChatGPT 4.1 翻译