CF425A Sereja and Swaps

题意

给定 nn 个数的序列 aa,交换序列的任意两个数 kk 次,求交换后最大子段和。

解法

考虑贪心。

因为 n200,k10n \leq 200, k \leq 10,所以我们可以考虑平方级别的复杂度。

假设最终必须选区间 l,r(lr)l, r(l \leq r),那么显然这 kk 次操作,每次应该选择区间内最小值,和区间外最大值交换,也就是交换 mini=lrai\min_{i=l}^r a_imax{maxi=1l1ai,maxi=r+1nai}\max\{\max_{i=1}^{l-1 } a_i,\max_{i=r+1}^n a_i\} 交换,但是如果区间内最小值 \geq 区间外最大值,那么停止交换。

对于每一个区间 l,rl, r 都进行 kk 次查询最值,复杂度 O(n3k)O(n^3 k),可以通过。

posted @ 2022-05-07 21:10  HappyBobb  阅读(15)  评论(0)    收藏  举报  来源