题目链接
给定一列数 a1,a2,⋯,an,你可以至多对其作 k 次操作。在每次操作中,你可以任意选择两个元素并交换它们的位置。求连续子序列元素和的最大值。
特殊的数据范围:1≤n≤200,1≤k≤10。
这么小的 n 你不暴力?
初看可能会觉得是什么奇怪的 dp,但再看一眼就会发现由于交换可以出现在任意位置,因此后效性是没法消除的。由于数据量特别小,不如直接暴力枚举所有的连续子序列 al,al+1,⋯,ar,移出其中最小的 k 个元素并将其替换为子序列外最大的 k 个元素。笔者的解法使用优先队列维护最大最小值,时间复杂度 O(n3klogn)。
见提交记录。