• nyoj 106背包问题(贪心专题)


    背包问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。
     
    输入
    第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
    随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。
    输出
    输出每组测试数据中背包内的物品的价值和,每次输出占一行。
    样例输入
    1
    3 15
    5 10
    2 8
    3 9
    
    样例输出
    65
    来源


    题意描述不清楚,V为单位价值
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    typedef struct
    {
        int v;int w;
    }p;
    p a[11];
    int cmp(p a,p b)
    {
        return a.v>b.v;
    }
    int main()
    {
        int t,n,m,i,sum;
        scanf("%d",&t);
        while(t--)
        {
            sum=0;
            scanf("%d%d",&n,&m);
            for(i=0;i<n;i++)
            {
                scanf("%d%d",&a[i].v,&a[i].w);
            }
            sort(a,a+n,cmp);
            for(i=0;i<n;i++)
            {
                if(a[i].w<m)
                {
                     sum+=a[i].w*a[i].v;
                     m-=a[i].w;
                }
                else
                {
                    sum+=m*a[i].v;
                    break;
                }
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    MyBatis的几种批量操作
    mysql event_scheduler运行一段时间后 自动关闭
    Mysql 中的事件//定时任务
    JSON对象
    JSON语法
    JSON简介——(0)
    【zTree】zTree的3.5.26静态树与动态树(实用)
    frameset测试
    iframe测试
    jQuery遍历方式
  • 原文地址:https://www.cnblogs.com/asd1234/p/3387799.html
Copyright © 2020-2023  润新知