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

【洛谷贪心算法题】P2240部分背包问题

在这里插入图片描述

【解题思路】

  1. 贪心策略选择
    • 对于部分背包问题,关键在于如何选择物品放入背包以达到最大价值。由于物品可以分割,遍历排序后的物品数组,根据物品重量和背包剩余容量的关系,决定是将整个物品放入背包还是分割物品放入背包,并更新总价值。。
    • 单位重量价值高的物品,在相同重量下能带来更高的价值。所以,我们优先选择单位重量价值高的物品放入背包。
  2. 具体实现步骤
    • 首先,读入物品的数量 、背包容量 以及每个物品的重量 和价值(结构体存储) 。
    • 然后,计算每个物品的单位重量价值,并将物品按照单位重量价值从大到小进行排序(自定义排序)。
    • 接着,遍历排序后的物品列表,依次将物品放入背包。如果当前物品的重量小于等于背包剩余容量,就将整个物品放入背包,更新背包剩余容量和总价值。
    • 如果当前物品的重量大于背包剩余容量,说明不能将整个物品放入背包,此时将物品分割,放入背包剩余容量的部分,计算这部分物品的价值并更新总价值,同时结束循环,因为此时背包已满。

【代码示例】

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip> 
using namespace std;// 定义物品结构体,包含重量,价值和单位重量价值
struct Item {double weight;double value;double unitValue;
}; // 自定义比较函数,用于按单位重量价值从大到小排序
bool compare(const Item& a, const Item& b) {return a.unitValue > b.unitValue;
} int main() {int n;double m;cin >> n >> m;vector<Item> items(n);for (int i = 0; i < n; i++) {cin >> items[i].weight >> items[i].value;items[i].unitValue = items[i].value / items[i].weight;}// 按单位重量价值排序sort(items.begin(), items.end(), compare);double totalValue = 0;for (int i = 0; i < n; i++) {if (items[i].weight <= m) {m -= items[i].weight;totalValue += items[i].value;} else {// 正确的做法是累加当前物品按比例放入背包后的价值totalValue += items[i].unitValue * m; m=0;}}// 输出结果,保留三位小数cout << fixed << setprecision(2) << totalValue << endl;return 0;
}

注意:

  • #include <iomanip> 头文件:使用标准库中与输入输出格式控制相关的功能,具体在代码里用于精确控制输出结果的小数位数。

相关文章:

【洛谷贪心算法题】P2240部分背包问题

【解题思路】 贪心策略选择 对于部分背包问题&#xff0c;关键在于如何选择物品放入背包以达到最大价值。由于物品可以分割&#xff0c;遍历排序后的物品数组&#xff0c;根据物品重量和背包剩余容量的关系&#xff0c;决定是将整个物品放入背包还是分割物品放入背包&#xff…...

DevOps原理和实现面试题及参考答案

解释 DevOps 的核心目标与文化价值观,如何理解 “CAMS” 模型? DevOps 的核心目标是打破开发(Development)和运维(Operations)之间的壁垒,通过自动化、协作和持续反馈,实现软件的快速、可靠交付,以更好地满足业务需求和客户期望。具体来说,DevOps 旨在缩短软件的交付…...

《Somewhat Practical Fully Homomorphic Encryption》笔记 (BFV 源于这篇文章)

文章目录 一、摘要二、引言1、FHE 一般分为三个逻辑部分2、噪声的管理3. 贡献点4. 文章思路 三、基础数学知识四、基于 RLWE 的加密1. LWE 问题2. RLWE 问题3. RLWE 问题的难度和安全性 五、加密方案1. LPR.ES 加密方案2. Lemma 1 (引理 1)3. Optimisation/Assumption 1 (优化/…...

SpringBoot 2 后端通用开发模板搭建(异常处理,请求响应)

目录 一、环境准备 二、新建项目 三、整合依赖 1、MyBatis Plus 数据库操作 2、Hutool 工具库 3、Knife4j 接口文档 4、其他依赖 四、通用基础代码 1、自定义异常 2、响应包装类 3、全局异常处理器 4、请求包装类 5、全局跨域配置 补充&#xff1a;设置新建类/接…...

DeepSeek本地部署与Dify结合创建私有知识库指南

python调用本地deepseek+Dify的API使用--测试WX自动发送信息-CSDN博客 DeepSeek,一家在人工智能领域具有显著技术实力的公司,凭借其千亿参数规模的AI大模型,以及仅需0.5元人民币即可进行百万tokens的API调用成本,已经取得了令人瞩目的成就。不仅如此,DeepSeek的模…...

Nginx 报错:413 Request Entity Too Large

做web开发时&#xff0c;对于上传附件的功能&#xff0c;如果nginx没有调整配置&#xff0c;上传大一点的文件就会发生下面这种错误&#xff1a; 要解决上面的问题&#xff0c;只需要调整Nginx配置文件中的 client_max_body_size 参数即可&#xff0c;这个配置参数一般在http配…...

Arduino项目实战:使用MQ-2气体传感器与OLED屏幕监测环境气体

概述 在这个项目中,MQ-2气体传感器是一个多功能的气体检测设备,能够感知多种常见气体,如甲烷、丁烷、丙烷、酒精和烟雾等。你可以把它想象成一个超级灵敏的“嗅觉”,能够帮助你实时检测环境中的各种有害气体。与Arduino板连接后,MQ-2传感器把捕捉到的气体浓度数据传送给A…...

泛微Ecode新增Button调用服务器中的JSP页面里的方法

前言 前端Ecode调用 后端接口编写 JSP文件方法 总结 前言 因为我们是从之前E8版本升级到E9的&#xff0c;所以会有一些接口是通过jsp文件来实现前后端调用的&#xff0c;这里介绍的就是如果你有接口是写在jsp文件里面调用的&#xff0c;但是你又想在Ecode中调用的对应的接…...

C#实现本地Deepseek模型及其他模型的对话

前言 1、C#实现本地AI聊天功能 WPFOllamaSharpe实现本地聊天功能,可以选择使用Deepseek 及其他模型。 2、此程序默认你已经安装好了Ollama。 在运行前需要线安装好Ollama,如何安装请自行搜索 Ollama下载地址&#xff1a; https://ollama.org.cn Ollama模型下载地址&#xf…...

【ESP32S3接入讯飞在线语音识别】

视频地址: 【ESP32S3接入讯飞在线语音识别】 1. 前言 使用Seeed XIAO ESP32S3 Sense开发板接入讯飞实现在线语音识别。自带麦克风模块用做语音输入,通过串口发送字符“1”来控制数据的采集和上传。 语音识别对比 平台api教程评分百度...

【51单片机】快速入门

动手实践 > 理论空谈&#xff01;从点亮LED开始&#xff0c;逐步扩展功能&#xff0c;2周可入门基础。 一、51单片机基础概念 什么是51单片机&#xff1f; 基于Intel 8051架构的8位微控制器&#xff0c;广泛用于嵌入式开发。 核心特性&#xff1a;4KB ROM、128B RAM、32个…...

leetcode707----设计链表【链表增删改打印等操作】

目录 一、题目介绍 二、单链表 2.1 创建链表类 2.1.1 定义链表节点结构体代码块 2.1.2 MyLinkedList类的构造函数 2.1.3 私有成员变量 2.2 接口1&#xff1a;获取第下标为index的节点的值 2.3 接口2&#xff1a;头部插入节点 2.4 接口3&#xff1a;尾部插入节点 2.5 接…...

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候&#xff0c;通过命令行注册相应的服务&#xff08;比如cloudwego项目的demo_proto以及user服务&#xff09;失败。 解决办法 经过分析&#xff0c;是…...

【缓存】缓存雪崩与缓存穿透:高并发系统的隐形杀手

缓存雪崩与缓存穿透&#xff1a;高并发系统的隐形杀手 在高并发系统中&#xff0c;缓存是提升性能的重要手段。然而&#xff0c;缓存使用不当也会带来一系列问题&#xff0c;其中最常见的就是缓存雪崩和缓存穿透。这两个问题如果不加以解决&#xff0c;可能会导致系统崩溃&…...

网络协议 HTTP、HTTPS、HTTP/1.1、HTTP/2 对比分析

1. 基本定义 HTTP&#xff08;HyperText Transfer Protocol&#xff09; 应用层协议&#xff0c;用于客户端与服务器之间的数据传输&#xff08;默认端口 80&#xff09;。 HTTP/1.0&#xff1a;早期版本&#xff0c;每个请求需单独建立 TCP 连接&#xff0c;效率低。HTTP/1.1&…...

DeepSeek实现FunctionCalling调用API查询天气

什么是FunctionCalling Function Calling&#xff08;函数调用&#xff09;是大型语言模型&#xff08;如 OpenAI 的 GPT 系列&#xff09;提供的一种能力&#xff0c;允许模型在生成文本的过程中调用外部函数或工具&#xff0c;以完成更复杂的任务。通过 Function Calling&am…...

从 Spring Boot 2 升级到 Spring Boot 3 的终极指南

一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11&#xff0c;需按以下步骤操作&#xff1a; 安装 JDK 17&#xff1a;从 Oracle 或 OpenJDK 官网下载&#xff0c;配置环境变量&#xff08;如 JAVA_HOME&…...

C#设计模式深度解析:经典实现与现代演进 ——基于《设计模式》的.NET技术实践

一、设计模式与C#语言特性融合 C#凭借其面向对象特性、泛型、委托/事件、LINQ等能力&#xff0c;为设计模式提供了更优雅的实现方式。以下通过典型模式展现其技术融合&#xff1a; 1. 工厂方法模式 泛型约束 public interface IProduct<T> where T : new() {void O…...

原子性(Atomicity)和一致性(Consistency)的区别?

原子性&#xff08;Atomicity&#xff09;和一致性&#xff08;Consistency&#xff09;是数据库事务ACID特性中的两个核心概念&#xff0c;虽然它们密切相关&#xff0c;但解决的问题和侧重点完全不同。原子性关注事务的操作完整性&#xff0c;而一致性关注数据的逻辑正确性。…...

windows设置暂停更新时长

windows设置暂停更新时长 win11与win10修改注册表操作一致 &#xff0c;系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值&#xff0c;名称为FlightSettingsMaxPauseDays 根据需求填写数…...

【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费

【Kimi】免费生成PPT并免费下载 用了好几个大模型&#xff0c;有些能生成PPT内容&#xff1b; 有些能生成PPT&#xff0c;但下载需要付费&#xff1b; 目前只有Kimi生成的PPT&#xff0c;能选择模板、能在线编辑、能下载&#xff0c;关键全部免费&#xff01; 一、用kimi生成PP…...

一款在手机上制作电子表格

今天给大家分享一款在手机上制作电子表格的&#xff0c;免费好用的Exce1表格软件&#xff0c;让工作变得更加简单。 1 软件介绍 Exce1是一款手机制作表格的办公软件&#xff0c;您可以使用手机exce1在线制作表格、工资表、编辑xlsx和xls表格文件等&#xff0c;还可以学习使用…...

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 10分钟快速部署Elasticsearch单节点环境1. 系统环境要求1.1 硬件配置推荐1.2 软件依赖 2. Docker部署方案2.1 部署流程2.2 参数说明2.3 性能优化建议 3. 手动部署方案3.1 安…...

7 天精通 DeepSeek 实操手册

挑战目标 从零基础开始&#xff0c;用 7 天时间&#xff0c;精通 DeepSeek 实操。 对零基础的同学来说&#xff0c;要全部完成这个挑战并不容易。因此&#xff0c;我们提供了每天的学习目标和实操任务&#xff0c;并提供三大锦囊助你一臂之力&#xff1a; 针对常见问题的解决…...

过滤器 二、过滤器详解

过滤器生命周期&#xff1a; init(FilterConfig)&#xff1a;在服务器启动时会创建Filter实例&#xff0c;并且每个类型的Filter只创建一个实例&#xff0c;从此不再创建&#xff01;在创建完Filter实例后&#xff0c;会马上调用init()方法完成初始化工作&#xff0c;这个方法…...

【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】

文章目录 前言电脑配置&#xff1a;安装的Deepseek版本&#xff1a;使用的UI框架&#xff1a;体验效果展示&#xff1a;本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…...

网络安全学习中,web渗透的测试流程是怎样的?

渗透测试是什么&#xff1f;网络安全学习中&#xff0c;web渗透的测试流程是怎样的&#xff1f; 渗透测试就是利用我们所掌握的渗透知识&#xff0c;对网站进行一步一步的渗透&#xff0c;发现其中存在的漏洞和隐藏的风险&#xff0c;然后撰写一篇测试报告&#xff0c;提供给我…...

将VsCode变得顺手好用(1

目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹&#xff0c;用于放置调试文件以及你未来写的代码&#xff0c;随便命名但…...

【MySQL篇】表的操作

1&#xff0c;创建表 语法&#xff1a; create table ( field1 datatype, field2 datatype, field3 datatype )charset 字符集 collate 校验规则 engine 存储引擎; 说明&#xff1a; field表示列名datatype表示列的类型charset字符集&#xff0c;如果没有指明&#xff0c;则…...

第6_7章_管理权限评估和测试策略

管理权限 权限将受保护的对象与必须评估以决定是否应授予访问权限的策略相关联。 在创建要保护的资源以及要用于保护这些资源的策略后&#xff0c; 您可以开始管理权限。要管理权限&#xff0c;请在编辑资源服务器时单击 Permissions 选项卡。 可以创建权限来保护两种主要类…...