zoukankan      html  css  js  c++  java
  • 贪心之oj.1797

    1797:金银岛

    总时间限制:
    3000ms
    内存限制:
    65536kB
    描述
    某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同,分别为n1, n2, ... , ns,同时每个种类的金属总的价值也不同,分别为v1,v2, ..., vs。KID想一次带走价值尽可能多的金属,问他最多能带走价值多少的金属。注意到金属是可以被任意分割的,并且金属的价值和其重量成正比。
    输入
    第1行是测试数据的组数k,后面跟着k组输入。

    每组测试数据占3行,第1行是一个正整数w (1 <= w <= 10000),表示口袋承重上限。第2行是一个正整数s (1 <= s <=100),表示金属种类。第3行有2s个正整数,分别为n1, v1, n2, v2, ... , ns, vs分别为第一种,第二种,...,第s种金属的总重量和总价值(1 <= ni <= 10000, 1 <= vi <= 10000)。
    输出
    k行,每行输出对应一个输入。输出应精确到小数点后2位。
    样例输入
    2
    50
    4
    10 100 50 30 7 34 87 100
    10000
    5
    1 43 43 323 35 45 43 54 87 43
    
    样例输出
    171.93
    508.00
    
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    自己的代码:
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct zhubao
    {
     double wei,vau,avr;
    }a[10005];
    bool cmp(zhubao &x,zhubao &y)
    {
     return x.avr>y.avr;
    }
    int main()
    {
     int n,w,s;
     scanf("%d",&n);
     for(int q=1;q<=n;q++)
     {
      double totwei=0,tot=0;
      scanf("%d%d",&w,&s);
      for(int j=1;j<=s;j++)
      {
       scanf("%lf%lf",&a[j].wei,&a[j].vau);
       a[j].avr = a[j].vau/a[j].wei; 
      }
      sort(a+1,a+s+1,cmp);
      for(int i=1;i <= s;i++)
      {
       if(a[i].wei+totwei<=w)
       {
        totwei+=a[i].wei;
        tot+=a[i].vau;
       }
       else
       {
        int sum=0;
        sum=w-totwei;
        tot+=sum*a[i].avr;
        break;
       }
      }
      printf("%.2lf ",tot);
     } 
     return 0;
    }

    主要是比较每块珠宝的平均价 评均价个高的优先 就可以做到最后得到的是最高的
    无后效性:不改变每块的价值


    写了好久啊 终于d完了
    错因:tot 没有清0
       else 中 tot算的不对 用之前算过的平均价值算才对


  • 相关阅读:
    c3p0使用
    连接池介绍
    内存角度探寻C++面向对象 之 继承、多态
    java多线程总结
    SQL关联查询总结
    java内存管理总结
    自制操作系统 (六) 分割编译与中断处理
    C++内联函数
    C++函数指针
    springmvc下实现登录验证码功能
  • 原文地址:https://www.cnblogs.com/darlingroot/p/10163626.html
Copyright © 2011-2022 走看看