题目1433:FatMouse


#include<iostream>
#include<algorithm>
//#include<iomanip>
#include<stdio.h>
using namespace std;
 
typedef struct JavaBean{
    double J;//房间中的javaBean数目
    double F;//需要猫食
    double weight;//J/F 权重
}JB;
JB javaBean[1000];
bool cmp(const JB a,const JB b)
{
    return a.weight>b.weight;
}
 
int main()
{
    double M;//记录贮备了多少猫食
    int N;//记录几个房间
 
    double sum =0.0;//记录总共可换多少
 
    while(cin >> M >> N && (-1!= M) && (-1 != N))
    {
        sum = 0.0;//初始化总的数目
        for(int i =0; i<N; i++)
        {
            cin >> javaBean[i].J >>javaBean[i].F ;
            javaBean[i].weight= javaBean[i].J*1.0/javaBean[i].F;
        }
        //按权重对其降序排序
        sort(javaBean,javaBean+N,cmp);
         
        for(int j=0;j<N && M >0;j++)//此处最初条件写的是j<N,M>0出错好像不是与的关系
        {
            //可以全换时候
            if(M >javaBean[j].F)
            {
                sum +=javaBean[j].J;
                M -=javaBean[j].F;
            }
            else //只换部分
            {
                sum +=javaBean[j].weight*M;
                M =0;
            }
 
        }
        printf("%.03lf\n",sum);
        //cout<<setiosflags(ios::fixed)<<setprecision(3)<<sum<<endl;
    }
    return 0;
}
/**************************************************************
    Problem: 1433
    User: itswyy
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1548 kb
****************************************************************/


你可能感兴趣的:(题目1433:FatMouse)