购买文具
时间限制:1秒 内存限制:256N
【问题描述】
在文具店中,每一种文具都有一个整数价格。例如一支铅笔的价格是2元,而一个削笔刀的价格是5元。为了吸引更多的顾客,文具店举行了促销活动。
促销活动把一个或多个文具组合起来降价销售,例如: 三支铅笔的价格是5元, 而不是6元, 两个削笔刀和一支铅笔的价格是10元,而不是12元。
请你编写一个程序,计算顾客购买一定数量文具的花费,尽量利用优惠使花费最少。要注意的是,尽管有时候添加其他文具可以使花费更少,但是你不能这么做。
对于上面的文具信息,购买三支铅笔和两个削笔刀的最少花费的方案是:以优惠价购买两个削笔刀和一支铅笔(10元),以原价购买两支铅笔(4元)。
【输入格式】
第一行包含一个整数 \(m\),表示优惠方式的种类数。
接下来的 \(m\) 行,每一行都用几个整数来表示一种优惠方式: 第一个整数:\(n(1≤n≤5)\),表示这种优惠方式由n种文具组成。后面 \(n\) 对整数 \(c\) 和 \(k\),表示 \(k(1≤k≤5)\) 个编号为 \(c(1≤c≤5)\) 的文具共同构成这种优惠,最后的整数\(p(1≤p≤9999)\) 表示这种优惠的优惠价。优惠价总是比原价低。
第 \(m+2\) 行包含一个整数 \(b(0≤b≤5)\),表示需要购买 \(b\) 种不同的文具。
接下来的 \(b\) 行,每一行包括三个整数:\(c,k\) 和 \(p\)。\(c(1≤c≤5)\) 表示唯一的文具编号,\(k(1≤k≤5)\) 表示需要购买的 \(c\) 文具的数量。\(p(1≤p≤999)\) 表示 \(c\) 文具的原价。最多购买 5 * 5=25 个文具。
【输出格式】
只有一行,输出一个整数:购买这些文具的最低价格。
【输入输出样例1】
Input
2
1 1 3 5
2 1 1 2 2 10
2
1 3 2
2 2 5
Output
14
【输入输出样例2】
Input
10
1 2 2 150
2 3 1 2 1 177
1 3 2 212
2 1 1 2 1 152
2 1 1 3 1 190
1 1 2 169
2 4 1 2 1 165
2 4 1 3 1 195
2 4 1 1 1 177
1 4 2 181
4
4 3 103
1 3 92
3 3 114
2 3 87
Output
1041
【数据说明】
对于 \(100\%\) 的数据:\(0≤m≤99,0≤b≤5\)
【来源】
Nr.he