6 条题解

  • 1
    @ 2025-1-15 10:25:57
    #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);
    }
    
    
    

    信息

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