Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141033
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

2012年(66)

我的朋友

分类: C/C++

2012-08-21 11:08:31

Input
输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(0
Output
对于每组测试数据,请输出能够购买大米的最多重量(你可以假设经费买不光所有的大米)。
每个实例的输出占一行,保留2位小数。
Sample Input
1 7 2 3 3 4 4
Sample Output
2.33

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <vector>
  3. #include <iterator>
  4. #include <algorithm>
  5. using namespace std;

  6. typedef struct rice
  7. {
  8.     int price;
  9.     int height;
  10. } rice;    
  11. rice rc;
  12. bool comp(const rice &a,const rice &b)
  13. {
  14.     return a.price<b.price;
  15. }
  16. int main()
  17. {

  18.     vector<rice> vec;
  19.     int C;
  20.     scanf("%d",&C);
  21.     while(C--)
  22.     {
  23.         vec.clear();
  24.         int n,m;
  25.         scanf("%d%d",&n,&m);
  26.         float max=0.00;
  27.         for(int i=0;i<m;i++)
  28.         {
  29.             int p,h;
  30.          scanf("%d%d",&rc.price,&rc.height);
  31.          vec.push_back(rc);
  32.      }
  33.      sort(vec.begin(),vec.end(),comp);
  34.      vector<rice>::iterator iter;
  35.      for(iter=vec.begin();iter!=vec.end();iter++)
  36.      {
  37.             if((*iter).price*(*iter).height>=n)
  38.             {
  39.               max+=(float)(n)/(*iter).price;
  40.               break;
  41.          }
  42.             
  43.           else{
  44.                   max+=(*iter).height;
  45.              }
  46.             n=n-(*iter).price*(*iter).height;
  47.         }
  48.         printf("%.2f\n",max);
  49.     }
  50. }

阅读(1156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~