不难注意到 kkk 必须为偶数,且当 p={n,n−1,n−2,⋯ ,1}p = \{n,n-1,n-2,\cdots,1\}p={n,n−1,n−2,⋯,1} 时 ∑i=1n∣pi−i∣\sum \limits_{i = 1}^n |p_i - i|i=1∑n∣pi−i∣ 取到最大值。
不妨令初始时 p={1,2,3,⋯ ,n}p = \{1,2,3,\cdots,n\}p={1,2,3,⋯,n} 。不难发现若k≤2(n−1)k \leq 2(n-1)k≤2(n−1) ,那么我们只要交换p1,pk2+1p_1,p_{\frac k 2 + 1}p1,p2k+1 即可。若k>2(n−1)k > 2(n - 1)k>2(n−1) ,我们令 p1=n,pn=1p_1 = n , p_n = 1p1=n,pn=1 后将问题转换为令 $\sum \limits_{i = 2}^{n - 1} |p_i - i| = k - 2(n-1)$ ,这显然等价于 n′=n−2,k′=k−2(n−1)n' = n - 2, k' = k - 2(n-1)n′=n−2,k′=k−2(n−1) 时的原问题,递归求解即可。
我代码写的是抽象做法,和题解无关
expect LV 3
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户