1 条题解

  • 0
    @ 2024-10-22 15:51:55
    #include<bits/stdc++.h>
    #define ULL unsigned long long
    #define int long long
    #define endl '\n'
    #define debug(a) cout<<#a<<"="<<a<<endl;
    #define all(v) v.begin(), v.end()
    #define PII pair<int,int>
    using namespace std;
    constexpr int N =  1 *1e6 + 10,M = 5 * 1e3 + 10,inf = 0x3f3f3f3f;
    struct node
    {
        double w,v;
        double po; //权重
    };
    bool cmp(node a,node b) //权重从大到小排序
    {
        return a.po > b.po;
    }
    void solve()
    {
        double m;
        int n;
        cin >> m >> n;
        vector<node> c(n); 
        for(int i=0;i<n;i++)
        {
            cin>>c[i].w>>c[i].v;
            c[i].po = c[i].v * 1.0 / c[i].w;
        }
        sort(all(c),cmp);
        double ans = 0;
        for(auto [w,v,po] : c)
        {
            if(m - w <= 0)
            {
                ans += po * m;
                break;
            } 
            m -= w;
            ans += v;
        }
        printf("%.2f\n",ans);
    }
    signed main()
    {
        ios::sync_with_stdio(0);cin.tie(nullptr),cout.tie(nullptr);
        int _=1;
        cin>>_;
        while(_--)
        {
            solve();
        }
        return 0;
    }
    /**
     *    author: Nijika_jia
     *    created: 2024.10.20 23:08:44
     */
    
    
    • 1

    信息

    ID
    1120
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者