2020百度之星程序设计大赛(初赛一)Drink

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K(Java/Others) Problem Description

我们有 n 种不同的饮料,每种饮料有无限多瓶,第 i 种饮料一瓶提供 x[i] 毫升的水分,包含 y[i] 卡路里。
现在我们需要选择一种饮料一直喝,直到补充了至少 m 毫升的水分,我们想使得摄入的卡路里总和最小。请求出这个最小值。
一旦打开一瓶饮料,就一定要喝完。

Input

第一行一个整数 test(1≤test≤100) 表示数据组数。
对于每组数据,第一行两个整数 n,m(1≤n≤100,1≤m≤10000)。
接下来 n 行,每行两个整数 x[i],yi

Output

对于每组数据,一行一个整数表示答案。

Sample Input

2
1 10
3 3
2 10
3 3
2 1

Sample Output

12
5

分析

由于只选一种饮料,所以只要遍历出总卡路里最小的一种饮料即可。

C++代码

#include<iostream>
using namespace std;

int main()
{
	int n,m,t;
	cin>>t;
	while(t--)
	{
		int x,y,k,min=1000001;
		cin>>n>>m;
		for(int i=0;i<n;i++)
		{
			cin>>x>>y;
			k=m/x;
			if(m%x)k++;
			if(min>k*y)min=k*y;
		}
		cout<<min<<endl;
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值