#P1170. Shopping Offers

Shopping Offers

题目描述

某商店的商品均有定价,例如:

  • 鲜花单价 22 ICU(信息学货币单位)
  • 花瓶单价 55 ICU

为了促销,商店推出特价优惠

  • 每个优惠包含一组商品的组合价,比单独购买更便宜。
    • 例如:33 朵鲜花仅售 55 ICU(原价 66
    • 22 个花瓶 + 11 朵鲜花仅售 1010 ICU(原价 1212

任务:编写程序计算顾客购买指定商品时的最低总价,要求充分利用优惠组合,且不得额外添加商品(即使可能更便宜)。

示例:购买 33 朵鲜花和 22 个花瓶的最低价为 1414 ICU:

  • 使用优惠:22 花瓶 + 11 鲜花 = 1010 ICU
  • 剩余 22 朵鲜花按原价 2×2=42 \times 2 = 4 ICU
  • 总价:10+4=1410 + 4 = 14 ICU

输入格式

程序从标准输入读取数据:

  1. 第一行:购物篮中的商品种类数 bb0b50 \leq b \leq 5)。
  2. 接下来 bb:每行描述一种商品,格式为 c k p,其中:
    • cc 为商品编码(1c9991 \leq c \leq 999
    • kk 为购买数量(1k51 \leq k \leq 5
    • pp 为单价(1p9991 \leq p \leq 999
    • 总商品数不超过 25255×55 \times 5
  3. b+2b+2特价优惠数量 ss0s990 \leq s \leq 99)。
  4. 接下来 ss:每行描述一个优惠,格式为:
    • 第一个数 nn 表示优惠包含的商品种类数(1n51 \leq n \leq 5
    • 接着 nnc k,表示需要 kk 个商品 cc
    • 最后一个数 pp 表示优惠价(1p99991 \leq p \leq 9999
    • 优惠价严格低于原价总和

输出格式

程序向标准输出写入结果:

  • 一行,表示最优总价(即最低需支付的金额)。

输入样例 1

2  
7 3 2  
8 2 5  
2  
1 7 3 5  
2 7 1 8 2 10  

输出样例 1

14