返回题解分享
讨论 / 题解分享/ 帖子详情

阿里巴巴与金币 - 题解

#include <bits/stdc++.h>
using namespace std;

struct treasure{   //连锁数据排序
    double m, v, rate;
};

bool cmp(treasure a, treasure b)
{
    return a.rate>b.rate;
}

int main()
{
    int N, T;
    cin >> N >> T;
    vector<treasure> treasures(N);
    double sum=0;
    for(int i=0; i<N; i++)
    {
        cin >> treasures[i].m >> treasures[i].v;
        treasures[i].rate=treasures[i].v/treasures[i].m;
    }
    sort(treasures.begin(), treasures.end(), cmp);
    for(int i=0; i<N; i++)
    {
        if(T>=treasures[i].m)   //尽量不造成出现负数的情况
        {
            T-=treasures[i].m;
            sum+=treasures[i].v;
        }
        else
        {
            sum+=treasures[i].rate*T;
            T=0;
            break;
        }
    }
    printf("%.2lf", sum);
    return 0;
}
0 回复 0 转发 0 喜欢 4 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!