小苯的01背包easy(枚举,位运算,思维推导)

文章目录

  • 题目描述
    • 输入格式
    • 输出格式
    • 样例输入1
    • 样例输出1
    • 样例输入2
    • 样例输出2
    • 提交链接
    • 提示
  • 解析
  • 参考代码

题目描述

小苯有一个容量为 k k k 的背包,现在有 n n n 个物品,每个物品有一个体积 v v v 和价值 w w w,他想知道在体积不超过 k k k 的前提下,他最多能装价值为多少的物品。

本问题中,物品的总体积定义为所装物品的体积的 &(按位与),总价值也定义为所装物品的价值的 &(按位与)。

(如果不选物品,则价值为 0,所占体积也为 0。)

输入格式

输入包含 n + 1 n+1 n+1 行。

第一行两个正整数 n , k ( 1 ≤ n ≤ 2 ∗ 1 0 3 , 0 ≤ k ≤ 2 ∗ 1 0 3 ) n,k(1 \leq n \leq 2*10^3,0 \leq k \leq 2 * 10^3) n,k(1n2103,0k2103)分别表示物品个数和背包容量。

接下来 n n n 行,每行两个正整数 v i , w i ( 0 ≤ v i , w i ( 0 ≤ v i , w i ≤ 2 ∗ 1 0 3 ) ) v_i,w_i(0 \leq v_i,w_i(0 \leq v_i,w_i \leq 2 * 10^3)) vi,wi(0vi,wi(0vi,wi2103)) ,表示每个物品的体积和价值。

输出格式

输出包含一行一个整数,表示能装的最大价值。

样例输入1

3 1
7 3
10 7
9 6

样例输出1

2

样例输入2

3 2
7 3
10 7
9 6

样例输出2

3

提交链接

https://hydro.ac/d/lp728/p/23

提示

样例解释 1 1 1
选择第一个和第三个物品。
体积为:7 & 9 = 1
价值为:3 & 6 = 2。
可以证明不存在比 2 2 2 更大的价值。

样例解释 2 2 2
选择第一个和第二个物品。

解析

& 操作的特点,越 & 越小。

现在需要找到最大价值, 设其为 a n s ans ans

v a l u e [ 1 ] value[1] value[1] & v a l u e [ 2 ] value[2] value[2] & … = a n s ans ans,可以得到: a n s ans ans & v a l u e [ i ] value[i] value[i] = a n s ans ans ( a n s ans ans 在任意一位的 1 1 1, 每个 v a l u e value value 在对应位上都有)

体积是选的越多越可行, 所以可以枚举答案。

然后按 ans & value[i] = ans 这个条件,选出所有物品

计算出这些物品的总体积, 如果满足容量 k k k 限制, 则找到一个可行解。

参考代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 9;
int n , k , v[maxn] , w[maxn] , mx;
int main()
{cin >> n >> k;for(int i = 1; i <= n; i++)cin >> v[i] >> w[i];    //体积  价值for(int s = 2000; s >= 0; s--)  //枚举答案  答案不会超过最大的wi{int weight = (1 << 20) - 1; //按位与的初始条件 for(int i = 1; i <= n; i++){if((s & w[i]) == s)  //可以选的物品weight = weight & v[i];  //体积按位与}if(weight <= k){mx = s;break;}    }cout << mx;return 0;
}

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

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

相关文章

ACM实训冲刺第十八天

统计元音 代码 需要注意的是getchar()和gets(s) #include<stdio.h> #include<string.h> int main(){//测试实例个数int n;scanf("%d",&n) ;char s[100];getchar();while(n--){gets(s);int cnta0,cnte0,cnti0,cnto0,cntu0;for(int j0;j<strlen(…

蓝桥杯杨辉三角

PREV-282 杨辉三角形【第十二届】【蓝桥杯省赛】【B组】 &#xff08;二分查找 递推&#xff09;&#xff1a; 解析&#xff1a; 1.杨辉三角具有对称性&#xff1a; 2.杨辉三角具有一定规律 通过观察发现&#xff0c;第一次出现的地方一定在左部靠右的位置&#xff0c;所以从…

Math对象是什么?有什么用?

Math对象是JavaScript的一个内置对象&#xff0c;包含了一些常用的数学方法和属性。它提供了一些数学运算的函数&#xff0c;可以通过调用这些函数来执行各种数学计算。 Math对象的一些常用方法包括&#xff1a; 1. Math.abs(x)&#xff1a;返回一个数的绝对值。 2. Math.ceil…

浅析OceanBase数据库:特点、优势与应用场景

随着数据量的不断增长和业务需求的不断变化&#xff0c;数据库技术在现代信息系统中的地位变得越来越重要。蚂蚁集团推出的OceanBase数据库&#xff0c;凭借其高性能、高可用性和高扩展性&#xff0c;成为了业内备受关注的明星产品。本文将从技术角度&#xff0c;浅浅的解析Oce…

FTP协议——BFTPD安装(Linux)

1、简介 BFTPD&#xff0c;全称为 Brutal File Transfer Protocol Daemon&#xff0c;是一个用于Unix和类Unix系统的轻量级FTP服务器软件。它的设计理念是提供一个简单、快速、安全的FTP服务器解决方案&#xff0c;特别适用于需要低资源占用的环境。 2、步骤 环境&#xff1…

C语言基础-如何避免内存泄漏

在C语言中&#xff0c;内存泄漏是一个常见且严重的问题&#xff0c;因为它可能导致程序消耗过多的内存资源&#xff0c;最终耗尽系统资源&#xff0c;导致程序崩溃或系统变得不稳定。为了避免内存泄漏&#xff0c;程序员需要仔细管理分配的内存&#xff0c;并确保在适当的时候释…

使用Golang调用腾讯云对象存储(COS)

文章目录 一、腾讯云COS对象存储创建1.1 创建存储桶2.1 存储桶测试 二、使用Golang调用腾讯云对象存储&#xff08;COS&#xff09;2.1 安装COS SDK2.2 初始化COS客户端2.3 上传文件2.4 下载文件2.5 列出存储桶中的对象2.6 整体代码示例 本文档介绍如何使用Golang调用腾讯云对象…

正在直播:Microsoft Copilot Studio 新增支持Copilot代理、Copilot扩展等多项功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

java连接ldap实现查询

文章目录 一、项目背景二、准备工作三、验证结果四、易错点讲解易错点1&#xff1a;java: 无法访问org.springframework.ldap.core.LdapTemplate易错点2&#xff1a;java: 无法访问org.springframework.context.ConfigurableApplicationContext易错点3&#xff1a;[LDAP: error…

思科、华为、华三、Juniper路由协议优先级汇总

Part1思科路由协议管理距离默认值 路由来源默认值已连接的接口0静态路由1增强型内部网关路由协议 (EIGRP) 汇总路由5外部边界网关协议 (BGP)20内部 EIGRP90IGRP100OSPF110IS-IS&#xff08;中间系统到中间系统&#xff09;115路由信息协议 (RIP)120Exterior Gateway Protocol …

Python——字典数据存入excel

# 字典结果写入excel表保存 df pd.DataFrame(my_dict) # dict转DataFrame result_excel df.T # 转置 print(result_excel) result_excel.to_excel(save_path) # 写入excel

C++:STL—算法

C:STL—算法 算法 算法 STL&#xff08;Standard Template Library&#xff09;中的算法是为了操作数据集合&#xff08;如容器&#xff09;而设计的函数模板集合&#xff0c;它们提供了丰富的功能和灵活的接口&#xff0c;可以用于对数据进行排序、查找、遍历等操作。STL中的…

STM32 学习——1. STM32最小系统

这是一个最小系统的测试&#xff0c;LED灯会进行闪烁。选用PC13口&#xff0c;因为STM32F103C8T6 硬件开发板中&#xff0c;这个端口是一个LED 1. proteus8.15 原理图 2. cubemx 新建工程 3. keil 代码 while (1){HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);HAL_Delay(100);…

WGCAT工单系统如何配置通知

WGCAT工单系统可以配置邮件通知 只要配置了邮件通知&#xff0c;那么一旦我们账号有新的工单需要处理&#xff0c;就会接受到邮件通知 除了邮件之外&#xff0c;还可以配置其他方式的通知&#xff0c;比如微信钉钉短信等方式&#xff0c;参考如下 https://www.wgstart.com/wgc…

机器学习(五) -- 监督学习(5) -- 线性回归1

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;4&#xff09; -- 集成学习方法 - 随机森林 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;5&#xff09; -- 线性回归2 前言 tips&#xff1…

Jmeter例题分析-作业一

作业 作业1概要 本文档是关于执行软件性能测试的详细指南&#xff0c;包括使用JMeter工具进行测试的步骤和要求。 文档分为两个主要部分&#xff1a;性能测试的执行和性能测试报告的编写。 在第一部分中&#xff0c;详细描述了如何使用 JMeter进行性能测试。这包括设置测试环…

PyTorchLightning集成SwanLab进行训练监控与可视化

文档&#xff1a;https://docs.swanlab.cn/zh/guide_cloud/integration/integration-pytorch-lightning.html PyTorch Lightning是一个开源的机器学习库&#xff0c;它建立在 PyTorch 之上&#xff0c;旨在帮助研究人员和开发者更加方便地进行深度学习模型的研发。Lightning 的…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;该数组具有以下属性&#xff1a; nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3] 输…

树形dp(学习过程+刷题总结)

树形 d p &#xff08;学习过程 刷题总结&#xff09; \Huge{树形dp&#xff08;学习过程刷题总结&#xff09;} 树形dp&#xff08;学习过程刷题总结&#xff09; 文章目录 写在前面基本的dp方程选择节点类树形背包类 例题练习已练习未练习 写在前面 花了几天时间学了一下树…

leetcode每日一题第八十九天

class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> mp;mp[0] 1;int count 0,pre 0;for(auto x:nums){pre x;if(mp.find(pre-k) ! mp.end()){count mp[pre-k];}mp[pre];}return count;} };