4 条题解

  • 0
    @ 2024-4-12 4:03:35
    #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;
    }
    

    信息

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