题意:
有m个超市,在第i个超市买b千克苹果需要花a元。也就是说,花a/b元可以买1kg苹果。每个超市都无限量供应苹果。你要买n千克苹果,问你最少花多少钱。
输入:
第一行两个正整数n和m(1<=n<=5000,1<=m<=100)
接下来m行,每行两个正整数a和b(1<=a,b<=100)
输出:
一行一个实数,表示你最少花的钱。与标准答案的误差不能超过10^(-6)
题解:
由于数据小,所以可以直接从头开始枚举b[i]/a[i]最大的,最后直接输出最大的就可以AC了。 上代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n,m;
cin>>n>>m;
long long i,a[n+1],b[n+1];
for (i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
double yuan[n+1],ans;//yuan数组存储b[i]/a[i]的值
for (i=1;i<=n;i++)
{
yuan[i]=b[i]*1.000000000/a[i];//强制转换为浮点类型
}
sort(yuan+1,yuan+n+1);//排序,找到b[i]/a[i]最大的
ans=m/yuan[n];
cout<<fixed<<setprecision(8)<<ans<<endl;//比赛时我是根据样例,打印到小数点后8位的
return 0;
}