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;
}
网友评论