题解 CF919A 【Supermarket】

题意:

有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;
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页