P10393 数学 构造
为了方便,令 \(\operatorname{nxt}(x)\) 为 \(x\) 后一位的下标,即
\[\begin{cases}
x + 1 &x < n \\
1 &x = n
\end{cases}
\]
根据题目,可以得出 \(a_i = 2w_i - a_{\operatorname{nxt}(i)}\)。
将 \(a_{\operatorname{nxt}(i)}\) 的式子递归代入 \(a_i\),得
\[\begin{aligned}
a_1 &= 2w_1 - 2w_2 + 2w_3 - \cdots - 2w_{n - 1} + 2w_n - a_1 \\
2a_1 &= 2w_1 - 2w_2 + 2w_3 - \cdots - 2w_{n - 1} + 2w_n
\end{aligned}
\]
则有
\[a_1 = w_1 - w_2 + w_3 - \cdots - w_{n - 1} + w_n \]
对于上式中的 \(w_i\),当 \(2 \nmid i\) 时系数为 \(+1\),\(2 \mid i\) 时系数为 \(-1\)。由于 \(2 \nmid n\),最后一项的系数一定为 \(+1\)。
先对 \(w\) 从小到大排序得到 \(p\)。由于 \(w'\) 和 \(w''\) 一定是 \(w\) 的重排列,很容易想出:
-
当要求 \(a_1\) 最大时,将 \(p\) 的前 \(\left\lfloor \dfrac n 2 \right\rfloor\) 位安排在下标为偶数的位置,使得减去的值最小;将 \(p\) 剩下的 \(\left\lfloor \dfrac n 2 \right\rfloor + 1\) 位安排在下标为奇数的位置,使得加上的值最大。
-
当要求 \(a_1\) 最小时,将 \(p\) 的后 \(\left\lfloor \dfrac n 2 \right\rfloor\) 位安排在下标为偶数的位置,使得减去的值最大;将 \(p\) 剩下的 \(\left\lfloor \dfrac n 2 \right\rfloor + 1\) 位安排在下标为奇数的位置,使得加上的值最小。
代码。