QOJ 8478. Count the Orders 题解

原题

题意简述

你有 \(n\) 个数,我们要将这 \(n\) 个数组成一个环,最大化环内相连元素差的绝对值的和,并给出可以得到答案的环的数量.

形式化的:

给定一个长度为 \(n\) 的数组 \(a\).最大化

\[max=\sum\limits_{i=1}^{n} |a_i-a_{i mod n +1}| \]

并给出权值为\(max\)的排列的数量.

思考

显然,最优的排列一定尽量一个大,一个小,一个大,,一个小......

那么我们可以给排列中的元素分类.一个是大的,一个是小的

我们先个\(a\)从大到小拍个序

我们可以发现性质:那些相邻元素中较小的那个总是\(n\)个元素中最小的\(\frac{n}{2}\)个. (当然这得注意一下\(n\)的奇偶性,当n为奇数的时候,会出现一个相邻的破坏这一点,但是这是必然的)

我们先只考虑偶数.

显然,每个元素总是与两个元素相邻.所以每个元素有两次贡献.

对于两个相邻的元素的贡献,肯定是

因此最优的答案与具体的排列没有关系.总是$2 \times \sum\limits_{i=1}^{\frac{n}{2}}a_i - 2 \times \sum\limits_{i=\frac{n}{2}+1}^{n}a_i $

所以我们只需要保证排列中大的和小的间隔就行.

所以环的数量是\(!\frac{n}{2}*!\frac{n}{2}\)

但是我们要注意一下可以先放小的,也可以先放大的.所以要乘二.

所以\(n\)为偶数时的最优排列的数量为\(2(!\frac{n}{2})^2\)

我们考虑为奇数的情况.

可以转化为先去掉最中间那个数,然后按照偶数计算.再将中间那个数插入进去.

很容易发现中间那个数是不贡献答案的.

那么我们如何计算最优排列的数量呢?

很简单把\(n\)插入的位置的数量乘上去就行了.

所以\(n\)为奇数时的最优排列的数量为\(2n(!\frac{n-1}{2})^2\)

posted @ 2026-08-17 13:05  txp2025  阅读(3)  评论(0)    收藏  举报