#abc474e. One Time Coupon
One Time Coupon
题目描述
某家店出售 种商品,每种商品都可以购买任意多次。
第 种商品 有下面两种购买方式:
- 不使用优惠券,花 元购买,并获得 张优惠券;
- 使用 张优惠券,花 元购买。
最初你一张优惠券都没有。
请求出把每种商品都至少买一次所需金额的最小值。
输入包含 组测试数据,请对每组分别求解。
输入格式
T
case_1
case_2
...
case_T
每组测试数据的格式为:
N
A_1 B_1
A_2 B_2
...
A_N B_N
输出格式
按顺序输出每组测试数据的答案,每组一行。
输入示例 1
3
5
11 6
6 5
2 1
8 3
7 4
4
5 1
5 2
5 3
5 4
6
24 13
24 2
50 12
35 25
28 26
10 1
输出示例 1
23
13
100
示例 1 说明
考虑第 组数据。按下面的方式行动即可用 元买齐所有商品:
- 不用券花 元买第 种商品,持券数变为 ;
- 不用券花 元买第 种商品,持券数变为 ;
- 不用券再花 元买一次第 种商品,持券数变为 ;
- 用券花 元买第 种商品,持券数变为 ;
- 用券花 元买第 种商品,持券数变为 ;
- 用券花 元买第 种商品,持券数变为 。
注意其中第 种商品被买了两次——多买一次纯粹是为了多攒一张券。这说明「为了攒券而额外购买」有时是划算的。
输入示例 2
2
1
10 1
3
100 1
100 1
100 1
输出示例 2
10
201
示例 2 说明
第 组只有一种商品,开局没有券,只能不用券买,答案就是 。
第 组三种商品完全相同。最优做法是:不用券买两次(),攒下 张券,再用券买最后一种(),共 。若三种都不用券要 ;若想用券买两种,就得先额外买一次凑券,反而更贵。这组数据用来检验额外购买张数的取舍。
输入示例 3
1
2
1000000000 999999999
1000000000 999999999
输出示例 3
1999999999
示例 3 说明
取到上限 ,两种商品各买一次的总额接近 ,已经超出 位整数范围。这组数据用来检验是否使用了 long long。
约束条件
- 所有测试数据中 的总和不超过
- 所有输入值均为整数