LOADING

加载过慢请开启缓存 浏览器默认开启

宝贝,生日快乐!!!LevOJ P1477 部分背包问题

2023/4/25

思路:

大水题,贪心法,每次拿单位价值最大的金币即可。

AC代码:

#include<bits/stdc++.h>

#include<iomanip>

using namespace std;

struct coin{
    double w;
    double v;
}a[105];

bool cmp(coin a,coin b){
    return a.v/a.w > b.v/b.w;
}

int main(){
    int n,t,k=1;
    double ans=0;
    cin>>n>>t;
    for(int i=1;i<=n;i++){
        cin>>a[i].w>>a[i].v;
    }
    sort(a+1,a+n+1,cmp);
    while(t>a[k].w){
        t-=a[k].w;
        ans+=a[k].v;
        k++;
    }
    ans+=(a[k].v/a[k].w)*t;
    cout<<fixed<<setprecision(2)<<ans;
    return 0;
}