P12329 [蓝桥杯 2023 省 Java B] 买二赠一【疑似错题】

题目背景

本题疑似错题,无法找到时间复杂度合理的能通过本题测试数据范围的做法。蓝桥杯官网普遍的题解做法(从大到小购买)可被样例 2 hack。

题目描述

某商场有 $N$ 件商品,其中第 $i$ 件的价格是 $A_i$。现在该商场正在进行“买二赠一”的优惠活动,具体规则是:每购买 $2$ 件商品,假设其中较便宜的价格是 $P$(如果两件商品价格一样,则 $P$ 等于其中一件商品的价格),就可以从剩余商品中任选一件价格不超过 $\frac{P}{2}$ 的商品,免费获得这一件商品。可以通过反复购买 $2$ 件商品来获得多件免费商品,但是每件商品只能被购买或免费获得一次。 小明想知道如果要拿下所有商品(包含购买和免费获得),至少要花费多少钱?

输入格式

第一行包含一个整数 $N$。 第二行包含 $N$ 个整数,代表 $A_1, A_2, A_3, \ldots, A_N$。

输出格式

输出一个整数,代表答案。

说明/提示

### 样例说明 小明可以先购买价格 $4$ 和 $8$ 的商品,免费获得一件价格为 $1$ 的商品;再后买价格为 $5$ 和 $7$ 的商品,免费获得价格为 $2$ 的商品;最后单独购买剩下的一件价格为 $1$ 的商品。总计花费 $4 + 8 + 5 + 7 + 1 = 25$。不存在花费更低的方案。 ### 评测用例规模与约定 - 对于 $30\%$ 的数据,$1 \leq N \leq 20$。 - 对于 $100\%$ 的数据,$1 \leq N \leq 5 \times 10^5$,$1\leq A_i\leq 10^9$。