7 条题解

  • 0
    @ 2025-2-3 20:49:48

    70%,不知道哪里错了,有佬能帮看看嘛

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Gold
    {
        int m;
        int v;
        double aver;
        bool operator<(const Gold& other) const
        {
            return aver < other.aver;
        }
    };
    
    int main()
    {
        int N, T;
        int m, v;
        cin >> N >> T;
        double sum = 0;
        priority_queue<Gold> q;
    
        for(int i = 0; i < N; i++)
        {
            cin >> m >> v;
            q.push({m, v, (double)v/m});
        }
    
        while(T > 0)
        {
            Gold g = q.top();
            q.pop();
            // 背包能装下现在的所有金币
            if(T > g.m)
            {
                sum += g.v;
            }
            else
            {
                sum += T * g.aver;
            }
            T -= g.m;
        }
    
        printf("%.2lf", sum);
    }
    

    信息

    ID
    77
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    474
    已通过
    119
    上传者