当前位置: 首页 > news >正文

【OpenJ_Bailian - 4110】圣诞老人的礼物-Santa Clau’s Gifts (贪心)

圣诞老人的礼物-Santa Clau’s Gifts

 Descriptions:

圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果。

Input

第一行由两个部分组成,分别为糖果箱数正整数n(1 <= n <= 100),驯鹿能承受的最大重量正整数w(0 < w < 10000),两个数用空格隔开。其余n行每行对应一箱糖果,由两部分组成,分别为一箱糖果的价值正整数v和重量正整数w,中间用空格隔开。

Output

输出圣诞老人能带走的糖果的最大总价值,保留1位小数。输出为一行,以换行符结束。

Sample Input

4 15
100 4
412 8
266 7
591 2

Sample Output

1193.0

题目链接;

https://vjudge.net/problem/OpenJ_Bailian-4110

这题比较水,就一个地方,求出每个礼物的平均价值,按照平均价值从大到小的顺序带走礼物即可

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define ME0(x) memset(x,0,sizeof(x))
using namespace std;
struct gift{
    double v,w;
    //定义按照v/w的大小进行排序,v/w大的优先,即礼物的平均价值大的优先
    bool operator < (const gift &c) const
    {
        return v/w-c.v/c.w > eps;
    }
};
gift a[105];
int n;
double W;//驯鹿承担的最大重量
double sum=0;//带走的礼物的最大价值
int main()
{
    cin>>n>>W;
    for(int i=0; i<n; i++)//输入
        cin>>a[i].v>>a[i].w;
    sort(a,a+n);//排序
    for(int i=0; i<n; i++)
    {
        //判断如果当前可承担重量比这一整箱礼物的重量大,就全部拿走,可承担重量减少
        if(W>=a[i].w)
        {
            sum+=a[i].v;
            W-=a[i].w;
        }
        //判断如果当前可承担重量比这一整箱礼物的重量小,就拿走可承担重量的礼物,可承担重量减为0
        else if(W<a[i].w)
        {
            double t=(a[i].v/a[i].w)*W;
            sum+=t;
            W=0;
        }
        else if(W==0)//可承担重量谓0,即不能拿礼物了,退出循环
        {
            break;
        }
    }
    printf("%.1lf\n",sum);
}

 

转载于:https://www.cnblogs.com/sky-stars/p/11073133.html

相关文章:

  • centos7通过yum安装docker
  • 【Beta】Scrum meeting 2
  • 在Windows下搭建Gitlab服务器
  • mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复
  • Docker是什么?可以用Docker做什么?
  • 《坐热板凳》第九次团队作业:Beta冲刺与验收准备(补交:实验十二 第八次团队作业:软件测试与ALPHA冲刺)...
  • 14-使用Vue来实现JQuery的动画效果
  • MP4V2 移植 (基于imx6 平台)
  • python学习之模块--模块(二)
  • Java数据结构和算法(七)--AVL树
  • linux 获取系统时间 strftime函数格式化时间为24/12小时制
  • 第7章 虚拟机类加载机制
  • Redis 学习笔记(篇三):跳表
  • Origin C访问数据库(MySQL)
  • jquery仿淘宝购物车页面商品结算(附源码)
  • [deviceone开发]-do_Webview的基本示例
  • 《Java编程思想》读书笔记-对象导论
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2019.2.20 c++ 知识梳理
  • ES6--对象的扩展
  • javascript面向对象之创建对象
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Zepto.js源码学习之二
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 诡异!React stopPropagation失灵
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 数据结构java版之冒泡排序及优化
  • 听说你叫Java(二)–Servlet请求
  • nb
  • 阿里云服务器购买完整流程
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​比特币大跌的 2 个原因
  • # 达梦数据库知识点
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #pragma pack(1)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (+4)2.2UML建模图
  • (175)FPGA门控时钟技术
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++)八皇后问题
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .aanva
  • .NET Project Open Day(2011.11.13)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET使用存储过程实现对数据库的增删改查
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution