设某个数为 x。
对于一个位置,最多做一次操作 1,最多做一次操作 2,并且两种操作可以都做。
先看两种操作各自带来的收益:
你是一家商店的经理,商店内共有 n 件商品,第 i 件商品的标价为 pi。你手中有两种不同类型的优惠券:
每件商品最多可以被使用一次半价券,最多使用一次固定减免券(两种券可以同时用在同一种商品上)。你总共有 a 张半价券和 b 张固定减免券。
请你合理分配这些优惠券,使得所有商品的最终价格之和达到最小,并输出这个最小值。
约束条件
第一行包含一个整数 T(1≤T≤2imes105),表示测试数据的组数。
接下来对于每组测试数据:
第一行包含四个整数 n,a,b,k,含义如上所述。
第二行包含 n 个整数 p1,p2,…,pn,表示各商品的初始标价。
对于每组测试数据,输出一行一个整数,表示经过最优使用优惠券后,所有商品的最终价格之和的最小值(该值可能为负数)。
输入
1
4 2 1 5
10 3 8 12
输出
17
说明
该组商品初始总价为 10 + 3 + 8 + 12 = 33。
对每件商品使用半价券可减少 ⌈pi/2⌉,各商品半价收益分别为:10 减少 5,3 减少 2,8 减少 4,12 减少 6。我们有 a = 2 张半价券,应选择收益最大的两件商品:12 和 10,共减少 6 + 5 = 11。
我们还有 b = 1 张固定减免券,减少 k = 5。
因此最终价格总和为 33 - 11 - 5 = 17。
输入
1
3 0 2 4
7 8 9
输出
16
说明
该组没有半价券(a = 0),只能使用固定减免券。
初始总价为 7 + 8 + 9 = 24。
使用 b = 2 张固定减免券,每张减少 k = 4,共减少 8。
最终价格总和为 24 - 8 = 16。
输入
2
1 1 1 100
50
2 0 0 10
100 200
输出
-75
300
说明
第一组:只有一件价格为 50 的商品。半价券收益为 ⌈50/2⌉=25,固定减免券收益为 k = 100。最终价格为 50 - 25 - 100 = -75。
第二组:有两件商品,但没有优惠券(a = 0,b = 0)。初始总价 100 + 200 = 300,无法减免,最终总和仍为 300。
输入
1
2 2 1 1
1 1
输出
-1
说明
两件商品价格均为 1。半价券收益为 ⌈1/2⌉=1,用满 a = 2 张共减少 2。固定减免券一张,减少 k = 1。初始总价为 2,最终总和为 2 - 2 - 1 = -1。
该样例展示了最终总和可以为负数。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册