在双11大促销中,商城共有 M 种商品,每种商品限购两件,原始价格为 X 元,购买一件的折扣价为 Y 元,购买两件的折扣价为 Z 元,其中满足 X≥Y≥Z。小明的银行卡余额为 N 元。在不超过 N 元的预算内,如何购买商品才能获得最大的优惠金额?
本问题可以转化为 多重背包问题。具体来说:
商城双11大促销,每种商品限购两件。一共有M种商品。每种商品的原始价格为X元。买一件折扣价是Y元,买两件折扣价是Z元。其中X>=Y>=Z。小明银行卡里有余额N元。在N元的范围内怎么购买商品,才可以获得最多的优惠金额?
第1行:商品种类M,M的范围是[1,20]。
第2到M+1行:每个商品的原始价格X元,购买一件的折扣价Y元,购买两件的折扣价Z元。 X\Y\Z的范围是[1,1000]。
第M+2行:小明银行卡余额N元。N的范围是[1,20000],N元至少可以购买一件商品。
输出可以获得的最多优惠金额
输入
2
10 8 6
8 6 6
20
输出
10
说明
第一个商品买2件,第二个商品买1件。总共花费2∗6+6=18元在20元范围内。
第一件商品优惠8元(2件),第二件商品优惠2元(1件)。总共优惠10元。
输入
3
10 8 4
20 17 13
30 20 10
50
输出
55
说明
第一个商品买2件,第二个商品买1件第三个商品买2件。总共花费2∗4+17+2∗10=41元在50元范围内。
第一件商品优惠12元(2件),第二件商品优惠3元(1件),第三件商品优惠40元(2件),总共优惠55元。