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

2020-07-21  本文已影响0人  gudu12306

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;
}
上一篇下一篇

猜你喜欢

热点阅读