想问一下有什么更优做法?
  • 板块学术版
  • 楼主JackMerryYoung
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/3 11:30
  • 上次更新2023/10/27 09:04:56
查看原帖
想问一下有什么更优做法?
224558
JackMerryYoung楼主2022/10/3 11:30

题目描述

一个删数游戏,一共有 3N3N 个数,现在请你删除其中的 NN 个数(不一定要连续删除),但是删除以后,留下来的 2N2N 个数相对顺序不能改变。

我们定义 VV 为删除 NN 个数后,前 NN 个数的和减去后 NN 个数的和的值。请问你要如何删除才能使得 VV 最大。

N105N \le 10^5, 所有数的绝对值小于等于 10910^9.

样例

输入

2 
3 1 4 1 5 9

输出

1

解释

可以删去第一个 11 和最后一个 99V=(3+4)(1+5)=1V = (3 + 4) - (1 + 5) = 1.

我的 Naive 想法

感觉是先排序前后 NN 个数,然后考虑怎么删数最优。

可以删前 NN 个的最小值,让中间那一段的最左的那个数进入前面 NN 个。

也可以删后 NN 个的最大值,让中间那一段的最右的那个数进入后面 NN 个。

然后可以用堆维护最大最小,复杂度大概 O(Nlog2N)\mathcal{O}(N \log_2 N)?

问题

想问一下有没有线性做法,也许依赖单调性?

2022/10/3 11:30
加载中...