【深基12.例1】部分背包问题

题目描述

阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N ( N ≤ 100 ) N(N \le 100) N(N100) 堆金币,第 i i i 堆金币的总重量和总价值分别是 m i , v i ( 1 ≤ m i , v i ≤ 100 ) m_i,v_i(1\le m_i,v_i \le 100) mi,vi(1mi,vi100)。阿里巴巴有一个承重量为 T ( T ≤ 1000 ) T(T \le 1000) T(T1000) 的背包,但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割,分割完的金币重量价值比(也就是单位价格)不变。请问阿里巴巴最多可以拿走多少价值的金币?

输入格式

第一行两个整数 N , T N,T N,T

接下来 N N N 行,每行两个整数 m i , v i m_i,v_i mi,vi

输出格式

一个实数表示答案,输出两位小数

样例 #1

样例输入 #1

4 50
10 60
20 100
30 120
15 45

样例输出 #1

240.00

思路描述:

	题目的意思其实就是,装最少的重量,获取最大的价值。所以我们可以先计算出每一堆金币的性价比,先把性价比最高的金币堆装了,直到装下一堆金币的时候超重了,那就按照比例装下一堆金币,装到足够的重量,这时候背包里装的金币价值就是最大的。这里用到了结构体和Sort函数在做题的时候会快很多。

AC代码:

#include <iostream>
#include <algorithm>	
#include <iomanip>
using namespace std;
struct gold
{double wealth;double weight;double rate;
};bool cmp(gold a, gold b) {return a.rate > b.rate;
}int main() {int m;cin >> m;int t;cin >> t;gold * arr = new gold[m];for (int i = 0; i < m; i++) {cin >> arr[i].weight >> arr[i].wealth;arr[i].rate = arr[i].wealth / arr[i].weight;}sort(arr,arr + m,cmp);double Weight = 0;double Wealth = 0;for (int i = 0; i < m; i++) {Weight += arr[i].weight;Wealth += arr[i].wealth;if (Weight > t) {Wealth -= arr[i].wealth;Weight -= arr[i].weight;int gap = t - Weight;Wealth += gap * arr[i].rate;break;}}cout << setiosflags(ios::fixed);cout << setprecision(2) << Wealth << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL中List的详细实现解析

文章目录 前言list 代码实现1. 构造函数和析构函数1.1 构造函数1.2析构函数 2.operator的重载 和 拷贝构造函数2.1 拷贝构造2.2 operator的重载 3. 迭代器的实现3.1 普通迭代器3.2 const迭代器 4. 插入和删除5. 测试代码总结 前言 在 C STL&#xff08;标准模板库&#xff09;…

【discuz x3.5】网站迁移记录

近期需要迁移一个discuz x3.5 论坛&#xff0c;记录一下迁移过程&#xff0c;以备用&#xff01; 1、在原网站后台-站长>数据库进行数据备份 2、在根目录打包网站所有文件 3、到官网下载一个跟网站版本相同的安装包 4、把新的安装包里的-install-安装文件夹覆盖到原网站…

mac命令行安装java

安装 sdkman sdkman 是java的一个版本管理的工具&#xff0c;比homebrew安装java更方便。可以安装多个版本的java sdkman 的安装命令如下 # 安装sdkman需要科学上网&#xff0c;先设置一下curl的代理&#xff0c;否则会因为网络原因安装失败 # 我用的clashX&#xff0c;代理…

在C语言中,设置Linux系统时间

C 语言中使用 mktime 函数和 stime 函数来处理时间。 处理之前&#xff0c;需要先获取当前的时间戳。并使用当前的时间戳生成struct tm&#xff0c;struct tm是C语言中用于表示日期和时间的结构体&#xff0c;通常用于在程序中操作和处理日期时间信息。它包含了以下成员变量&a…

DataDreamer:让创建自定义数据集轻松无比!还自带标注!

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

C语言----字符数组指针

1.char arr[] {a,b,c,d,e,f}; sizeof分析类型就可以计算所占的内存空间的大小&#xff1b; &#xff08;1&#xff09;printf("%d\n", sizeof(arr)); 数组名单独放进里面&#xff0c;计算整个数组大小&#xff0c;所以是6字节&#xff1b; &#xff08;2&#xff…

Java架构师之路八、安全技术:Web安全、网络安全、系统安全、数据安全等

目录 Web安全&#xff1a; 网络安全&#xff1a; 系统安全&#xff1a; 数据安全&#xff1a; Java架构师之路七、大数据&#xff1a;Hadoop、Spark、Hive、HBase、Kafka等-CSDN博客Java架构师之路九、设计模式&#xff1a;常见的设计模式&#xff0c;如单例模式、工厂模式…

【自动化脚本】常用自动化脚本一览【持续更新】

服务器初始化用户初始化 必备软件JDK1.8mavennginxredis docker相关dokcer安装docker mysql8.0 git相关git安装git卸载 服务器 初始化 wget -O centos7-init.sh https://files.rundreams.net/sh/run-sh/init/centos7-init.sh && sh centos7-init.sh用户初始化 wget …

设置主从复制时发生报错Could not find first log file name in binary log index file‘;解决方案

如图所示&#xff0c;slave_io_runnind:no,slave_sql_running:yes 此时&#xff0c;主从配置错误&#xff0c;我们可以查看Last_IO_Error:来查看报错信息 此时&#xff0c;我们需要停止从服务器的主从服务&#xff0c; mysql> stop slave; Query OK, 0 rows affected, 1 w…

k8s-heml管理 17

Helm是Kubernetes 应用的包管理工具&#xff0c;主要用来管理 Charts&#xff0c;类似Linux系统的 yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata&#xff0c;以便于应用程序的分发。 对于应用…

c语言之数组定义和初始化

数组是由类型说明符&#xff0c;数组名常量表达式组成&#xff0c;和python的序列类似。python序列是没有常量表达式 比如&#xff0c;有十个学生成绩&#xff0c;要定义数组如下 int stud[10]&#xff0c; int是类型说明符&#xff0c;stud是数组名&#xff0c;[10]表示有1…

压缩感知(Compressed Sensing,CS)的基础知识

压缩感知&#xff08;Compressed Sensing&#xff0c;CS&#xff09;是一种用于信号处理的技术&#xff0c;旨在以少于奈奎斯特采样定理所要求的样本频率来重构信号。该技术利用信号的稀疏性&#xff0c;即信号可以用较少的非零系数表示。压缩感知在图像获取中的应用使得在采集…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…

Python和Jupyter简介

在本notebook中&#xff0c;你将&#xff1a; 1、学习如何使用一个Jupyter notebook 2、快速学习Python语法和科学库 3、学习一些IPython特性&#xff0c;我们将在之后教程中使用。 这是什么&#xff1f; 这是只为你运行在一个个人"容器"中的一个Jupyter noteboo…

题目 1253: 老王赛马

题目描述: 赛马是一古老的游戏&#xff0c;早在公元前四世纪的中国&#xff0c;处在诸侯割据的状态&#xff0c;历史上称为“战国时期”。在魏国作官的孙膑&#xff0c;因为受到同僚庞涓的迫害&#xff0c;被齐国使臣救出后&#xff0c;到达齐国国都。 赛马是当时最受齐国贵族…

vivado FSM Components

Vivado合成功能 •同步有限状态机&#xff08;FSM&#xff09;组件的特定推理能力。 •内置FSM编码策略&#xff0c;以适应您的优化目标。 •FSM提取默认启用。 •使用-fsm_extraction off可禁用fsm提取。 FSM描述 Vivado综合支持Moore和Mealy中的有限状态机&#xff08;…

week04day04(爬虫)

一. 嵌套构造URL 下载所有英雄的皮肤图片&#xff1a;因为每个英雄图片的网址不同&#xff0c;但是有共同点&#xff0c;通过构建这个网址&#xff0c;再经过循环建立 所有链接 import requests import os# 1. 获取所有英雄的ID def get_all_hero_id():url https://game.gti…

C语言特殊函数

静态函数 背景知识&#xff1a;普通函数都是跨文件可见的&#xff0c;即在文件 a.c 中定义的函数可以在 b.c 中使用。 静态函数&#xff1a;只能在定义的文件内可见的函数&#xff0c;称为静态函数。 语法 staitc void f(void) // 在函数头前面增加关键字 static &#xff…

读取7400MB/s!华为发布eKitStor Xtreme M.2闪存条

今日&#xff0c;华为举行数据存储新春新品发布会&#xff0c;不仅发布全新数据湖解决方案&#xff0c;华为还针对商业市场与分销市场发布了全闪存存储新品。 据介绍&#xff0c;面向游戏加速、影视编辑、户外作业等场景&#xff0c;华为发布eKitStor Xtreme系列高性能M.2闪存条…

Leetcode454四数相加II

参考链接&#xff1a;代码随想录&#xff1a;Leetcode454四数相加II 解法1&#xff1a;听了代码随想录之后自己YY出来的解法&#xff08;200ms&#xff09;&#xff0c;有点慢 class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>&am…