商店购物
时间限制:1秒 内存限制:256M
【题目描述】
在商店中,每一种商品都有一个价格(用整数表示)。例如一朵花的价格是 2 元,而一个花瓶的价格是 5 元。为了吸引更多的顾客,商店举行了促销活动。
促销活动把一个或多个商品组合起来降价销售,例如: 三朵花的价格是 5 元, 而不是 6 元, 两个花瓶和一朵花的价格是 10 元,而不是 12 元。
编写一个程序,计算顾客购买一定商品的花费,尽量利用优惠使花费最少。尽管有时候添加其他商品可以获得更少的花费,但是你不能这么做。
对于上面的商品信息,购买三朵花和两个花瓶的最少花费的方案是:以优惠价购买两个花瓶和一朵花(10元),以原价购买两朵花(4元)。
【输入格式】
输入包括一些商店提供的优惠信息,接着是购物清单:
第 \(1\) 行: 优惠方式的种类数:\(S\)。
第 \(2\) 行..第 \(S+1\) 行: 每一行都用几个整数来表示一种优惠方式: 第 1 个整数:\(N(1<=N<=5)\),表示这种优惠方式由 \(N\) 种商品组成。后面 \(N\) 对整数 \(c\) 和 \(k\), 表示 \(k(1≤k≤5)\) 个编号为 \(c(1≤c≤999)\) 的商品共同构成这种优惠, 最后的整数 \(p(1≤p≤9999)\) 表示这种优惠的优惠价。优惠价总是比原价低。
第 \(S+2\) 行 这一行有一个整数 \(b(0≤b≤5)\),表示需要购买 \(b\) 种不同的商品。
第 \(S+3\) 行..第 \(S+b+2\) 行: 这 \(b\) 行中的每一行包括三个整数:\(c,k\),和 \(p\) 。\(c(1≤c≤999)\) 表示唯一的商品编号,\(k(1≤k≤5)\) 表示需要购买的 \(c\) 商品的数量。\(p(1≤p≤999)\) 表示 \(c\) 商品的原价。最多购买 \(5 * 5 = 25\) 个商品。
【输出格式】
只有一行,输出一个整数:购买这些物品的最低价格。
【输入输出样例】
Input
2
1 7 3 5
2 7 1 8 2 10
2
7 3 2
8 2 5
Output
14
【数据限制】
对于 \(100\%\) 的数据满足:0 ≤ s ≤ 99, 商品的编号为 1..999 范围内的整数; 每种优惠组合包含的商品个数最多为 5。 每种优惠组合的优惠价的范围是:1..9999 单个商品价格的范围是:1..999
【来源】
Mr.he