部分背包问题

复制代码
#include<iostream>
#include<algorithm>
using namespace std;
struct Node
{
    int w, v;
}a[110];
bool cmp(Node aa, Node bb)
{
    return aa.v * bb.w > aa.w * bb.v;
}
signed main()
{
    int n, m;
    cin >> n >> m;
    double ans = 0;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i].w >> a[i].v;
    }
    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; i++)
    {
        if (a[i].w <= m)
        {
            ans += a[i].v, m -= a[i].w;
        }
        else
        {
            ans += a[i].v * m * 1.0 / (a[i].w * 1.0);
            break;
        }
    }
    printf("%.2lf", ans);
    return 0;
}
复制代码

 

posted @   刘海烽  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示