用Vector做的 第一个点RE 麻中麻中麻
查看原帖
用Vector做的 第一个点RE 麻中麻中麻
582281
na1veffo楼主2022/4/8 17:57
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <stdio.h>

struct bag
{
    double m;
    double v;
    double ave;
};

bool cmp(bag a, bag b)
{
    return a.ave > b.ave;
}


vector<bag> V;

int main()
{
    int n;
    
 
    double t;
    scanf("%d%lf", &n,&t);
    
    if (n <= 0 || t <= 0)
    {
        cout << "0.00";
        return 0;
    }

    bag temp;
    while(n--)
    {
        double m1, v1;
        scanf("%lf%lf", &m1, &v1);
        temp.m = m1;
        temp.v = v1;
        temp.ave = v1 / m1;
        V.push_back(temp);
    }

    sort(V.begin(), V.end(), cmp);
    double sum = 0;
    for (int i = 0; t > 0; i++)
    {
        if (V[i].m <= t)
        {
            t -= V[i].m;
          
            sum += V[i].v;
        }
        else
        {
            sum += V[i].ave * t;
            t = 0;
        }
    }
    printf("%.2lf", sum);
    return 0;
}
2022/4/8 17:57
加载中...