P5797 [SEERC 2019] Max or Min

题目描述

Kevin 有 $n$ 个整数 $a_1, a_2, \dots, a_n$ ,它们按**环形**排列。对于环上的数字,数字 $a_i$ 和 $a_{i+1} \ (1 \leq i < n)$ 是相邻的,且数字 $a_1$ 和 $a_n$ 是相邻的。因此,每个数字有恰好两个相邻的数字。 在 $1$ 分钟内,Kevin 可以将 $a_i$ 修改为这 $3$ 个数字中的最小值或最大值:$a_i$ 以及它的两个相邻数字。例如,如果 $a_i=5$ 且 $a_i$ 的两个相邻数字为 $3$ 和 $2$,Kevin 修改 $a_i$ 为最小值后,$a_i$ 会变为 $2$;如果 Kevin 修改 $a_i$ 为最大值,$a_i$ 仍是 $5$。 对于从 $1$ 到 $m$ 的每个整数 $x$,计算出让上述环上的数字都变为 $x$ 的最短时间。

输入格式

输出格式

说明/提示

要让环上的所有整数都变为 $2$,Kevin 需要至少 $5$ 分钟。一种可行的修改方案为: 1. 将 $a_6$ 修改为它与相邻数字中的最小值,即修改为 $2$; 2. 将 $a_4$ 修改为它与相邻数字中的最大值,即修改为 $2$; 3. 将 $a_3$ 修改为它与相邻数字中的最大值,即修改为 $5$; 4. 将 $a_2$ 修改为它与相邻数字中的最小值,即修改为 $2$; 5. 将 $a_3$ 修改为它与相邻数字中的最小值,即修改为 $2$。