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

阿里巴巴与金币 - 题解

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct node
{
int m,v;
double x;
};
bool cmp(node &a,node &b)
{
    if(a.x>b.x)
    return 1;
    return 0;
}
vector<node> vec;
int main()
{
int N,T,m,v;
double x;
cin>>N>>T;
for(int i=0;i<N;i++)
{
    cin>>m>>v;
    x=(double)v/(double)m;
vec.push_back({m,v,x});
}
double sum=0.0;
sort(vec.begin(),vec.end(),cmp);
for(int i=0;i<N;i++)
{
    if(T==0)
    break;
    if(T>=vec[i].m)
    {
sum+=vec[i].v;
T-=vec[i].m;
    }
    else{
        sum+=T*vec[i].x;
        T=0;
    }
}
printf("%.2lf",sum);
}
0 回复 0 转发 1 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!