• 2052装船问题(贪心)


    Description

    王小二毕业后从事船运规划工作,吉祥号货轮的最大载重量为M吨,有10种货物可以装船。第i种货物有wi吨,总价值是pi。王小二的任务是从10种货物中挑选若干吨上船,在满足货物总重量小于等于M的前提下,运走的货物的价重比最大。

    Input

    输入数据的第一行有一个正整数M(0 < M < 10000),表示所有货物最大载重量。在接下来的10行中,每行有若干个数(中间用空格分开),第i行表示的是第i种货物的货物的总价值pi ,总重量wi。(pi是wi的整数倍,0 < pi , wi < 1000)

    Output

    输出一个整数,表示可以得到的最大价值。

    Sample

    Input 

    100
    10 10
    20 10
    30 10
    40 10
    50 10
    60 10
    70 10
    80 10
    90 10
    100 10

    Output 

    550

    Hint

    价重比:计算其价值与重量之比

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string.h>
     4 #include <vector>
     5 #include <queue>
     6 
     7 #define inf 0x3f3f3f3f
     8 
     9 using namespace std;
    10 
    11 struct node
    12 {
    13     int pi, wi, data;
    14 }huo[15];
    15 
    16 bool cmp(struct node a, struct node b)
    17 {
    18     return a.data > b.data ||(a.data==b.data&&a.wi>b.wi);
    19 }
    20 
    21 int main()
    22 {
    23     int n, m, i;
    24     long long re;
    25     cin >> m;
    26     n = 10;
    27     for(i=0;i<n;i++)
    28     {
    29         cin >> huo[i].pi >> huo[i].wi;
    30         huo[i].data = huo[i].pi / huo[i].wi;
    31     }
    32     sort(huo, huo+n, cmp);
    33     re = 0;
    34     for(i=0;i<n;i++)
    35     {
    36         if(m < huo[i].wi)
    37         {
    38             re = re + m * huo[i].data;
    39             break;
    40         }
    41         else
    42         {
    43             m -= huo[i].wi;
    44             re += huo[i].pi;
    45         }
    46     }
    47     cout << re << endl;
    48 
    49     return 0;
    50 }
  • 相关阅读:
    C sharp(C#)-小结
    安全开源工具清单
    pycharm中查看sqlite3数据库
    部署docker化的mobsf
    python处理文件、文件夹-小结
    windows上Python控制台乱码和处理
    自定义日志:记录Linux主机操作
    不是热点新闻的重大事件
    mybatis-04【小结】
    mybatis-03
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/14092651.html
Copyright © 2020-2023  润新知