基础算法题——younik吃大餐(多重背包)

2023-11-05

younik吃大餐

题目描述
Younik的检查结果出来了,核酸检测为阴性,她非常高兴,立刻决定去饭店大吃一顿。到了饭店,Younik看到琳琅满目的菜单,开始犯了选择困难症。这时作为顶级吃货的你恰好坐到了Younik的旁桌,你决定发扬一下雷锋精神,帮助Younik决定吃哪些菜。假设每一道菜都有相应的快乐值,Younik每吃一道菜就会获得相应的快乐值,这里有N道菜,每道菜可以吃多次,但是同一道菜每重复吃一次,得到的快乐值会比原来的快乐值少 2^(k-1) 点(k为重复吃的次数,第一次重复,得到的快乐值会比这道菜的原快乐值少1点,重复第二次时少2点,以此类推)。现在Younik的钱包中有M元,你觉得她可以得到的最大的快乐值是多少呢?

输入描述:
第一行输入N M,表示共有N道菜,小明有M元。接下来的N行,每行有两个数字Wi,Vi,第一个数字表示吃这道菜可得到的快乐值,第二个数字表示这道菜的价格。
菜的标号从1开始。
输出描述:
输出所能得到的最大快乐值

示例1
输入
6 9
3 2
5 2
2 7
1 2
3 3
6 3
输出
18
备注:
0 < N ≤ 100
0 < Vi,Wi ≤ 100
0 < M ≤ 10000


感觉这道题就是从完全背包演化来的,只是在多重背包的基础上需要考虑同种类拿多的情况。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll dp[100010];
struct node{
	ll hap,val; 
}food[110];

ll jc(int x){
	if(x==0) return 0;
	ll ans=1, sum=1;
	for(int i=0; i<x-1; i++){
		ans *= 2;
		sum += ans;
	}
	return sum;
}


int main(){
	int n, m;
	scanf("%d%d", &n, &m);
	for(int i=0; i<n; i++)
		scanf("%lld%lld", &food[i].hap, &food[i].val);
		
	memset(dp, 0, sizeof(dp));
	for(int j=0; j<n; j++)
	for(int i=m; i>=food[j].val; i--)
	for(int k=1; k*food[j].val<=i&&k*food[j].hap-jc(k-1)>0; k++)
		dp[i] = max(dp[i-k*food[j].val]+k*food[j].hap-jc(k-1), dp[i]);
	
	printf("%lld", dp[m]);
	
	return 0;
} 

完全背包例题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础算法题——younik吃大餐(多重背包) 的相关文章

随机推荐

  • 【操作系统】

    请解释下局部性原理 通俗易懂的解释 二维数组两维不同遍历的实例 关于CPU三级缓存的介绍 b
  • bes2300 tws配对_tws 耳机春天来了!

    本人负责蓝牙耳机音箱厂家的市场拓展 经常接触国内外各种卖家 专注亚马逊 京东的精品卖家 也有日本 欧美等线下渠道等的B端客户 当然作为行业的业务 也经常接触同行工厂 购买同行的产品或者借用产品用来测试 所以对产品的发展技术趋势及产品的体验感
  • 一文详解Spring事务传播机制

    目录 背景 Spring事务 Transactional注解 使用场景 失效场景 原理 常用参数 注意 事务传播机制 处理嵌套事务流程 主事务为REQUIRED子事务为REQUIRED 主事务为REQUIRED子事务为REQUIRES NE
  • Android JNI 打印日志

    首先要保证Cmake文件中有log模块引用 不然编译不通过 编译一个库 add library native lib 库的名字 SHARED 动态库 so库 native lib cpp 需要编译的C 文件 相当于定义一个变量log lib
  • 内核模式驱动程序的网络结构

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 1 Windows 2000 网络结构和OSI模型 Windows 2000网络结构是以国际标准化组织 ISO 制定的七层网络模型为基础的
  • 刷脸支付助力商家吸引客户增加客流量

    顾客支付完成后 直接领取会员卡 保存到微信卡包 可以作为充值卡 积分卡 打折卡 商家可以进行自定义 使用方便 不易丢失 灵活度高 同时商家还可以设置一键分享会员卡 通过老顾客转介绍有礼 快速增加会员 商家可自行发送优惠劵 通过刷脸支付即可领
  • ubuntu添加vlan和路由追踪

    1 linux添加vlan子接口 安装vconfig命令 apt get install vlan vconfig add eth0 105 eth0为物理网络接口名称 ifconfig eth0 105 192 168 105 10 对上
  • HTML 5 Canvas vs. SVG

    一 SVG SVG 是一种使用 XML 描述 2D 图形的语言 SVG 基于 XML 这意味着 SVG DOM 中的每个元素都是可用的 您可以为某个元素附加 JavaScript 事件处理器 在 SVG 中 每个被绘制的图形均被视为对象 如
  • 面试题 02.03. 删除中间节点

    面试题 02 03 删除中间节点 删除中间节点 这道题是说只能访问中间某个位置的节点 然后要把它删除 由于没给前驱指针 如果真的删了中间的节点 链表就断开了 所以考虑把下一个节点的值赋给当前节点 然后删除下一个节点 这样就相当于删除了中间节
  • 幸福感

    抱怨 坦荡的看自己 做自己 我有什么 我要什么 我愿意放弃什么 公平 我们过这一生是为什么呢 世界什么时公平与不公平呢 人最宝贵的 客观的 生命和时间 心态 幸福感来自于心态 一个乐观的心态 每天都会发生很多事情让自己很浮躁 有时会觉得身心
  • [1042]JWT加密

    文章目录 简介 起源 数据格式 JWT交互流程 python使用jwt 非对称加密 简介 JWT 全称是Json Web Token 是JSON风格轻量级的授权和身份认证规范 可实现无状态 分布式的Web应用授权 jwt的解析工具 http
  • 有人物联口红DTU DR154配置与RS 485传感器数据处理

    一 硬件设备 1 有人物联口红DTU DR154 RS 485版本 配置的话通过小程序 联博士 蓝牙配置 手机扫描DTU背后的二维码即可 蓝牙密码也在背面 省去了连接电脑硬件配置的繁琐步骤 2 温度传感器 速灵科RSDS5 RS485接口
  • C语言位运算符及作用:与、或、异或、取反、左移和右移

    一 按位与 如果两个相应的二进制位都为1 则该位的结果值为1 否则为0 应用 1 清零 若想对一个存储单元清零 即使其全部二进制位为0 只要找一个二进制数 其中各个位符合一下条件 原来的数中为1的位 新数中相应位为0 然后使二者进行 运算
  • java反编译篇--miaow.Y.Hu

    好了 好久没更新了 今天来一篇关于java反编译的篇举例子 Java编译文件是指通过Java编译器将Java源代码文件 java文件 编译成字节码文件 class文件 的过程 在Java中 源代码文件包含人类可读的文本 而字节码文件是计算机
  • 常见分布的密度函数图像

    常见分布的密度函数图像 作者 凯鲁嘎吉 博客园 http www cnblogs com kailugaji 一 gamma分布 1 2 3 二 beta分布 1 a 1 2 b 1 3 三 卡方分布 四 t分布 五 F分布 1 n1 5
  • 垃圾分类小程序(含源码)

    前言 鉴于前期一段时间 自己接触小程序这块儿 根据当时的政策 随编写了垃圾分类小程序 在后期也做了很多的功能迭代 基本满足目前市面上的使用需求 期间也对当时垃圾分类的方案进行了简单汇总 可回收物 可回收物就是再生资源 指生活垃圾中未经污染
  • JDK1.8中关于HashMap的红黑树讲解

    一 首先需要了解以下几个问题 为什么要引入红黑数 特殊的平衡二叉树 数据结构 引入红黑树HashMap做了哪些改造 红黑树的特性 红黑树的具体实现方式 二 逐一解释以上三个问题 1 1 为什么要引入红黑数 特殊的平衡二叉树 数据结构 由于在
  • Matlab:如何读取并处理txt数据?

    Matlab 如何读取并处理txt数据 在Matlab中 读取和处理文本文件是非常常见的任务 txt文件是最常见的文本文件格式之一 可以包含各种类型的数据 此处介绍在Matlab中如何读取和处理txt文件 导入txt文件 Matlab提供了
  • cpp课程设计实验题:设计一个时间类Time,要求: (1)包含时(hour)、分(minute)和秒(second)私有数据成员。 (2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载

    设计一个时间类Time 要求 1 包含时 hour 分 minute 和秒 second 私有数据成员 2 包含构造函数 重载关于一时间加上另一时间的加法运算符 重载关于一时间减去另一时间的减加运算符 重载输出运算符 lt lt 与输入运算
  • 基础算法题——younik吃大餐(多重背包)

    younik吃大餐 题目描述 Younik的检查结果出来了 核酸检测为阴性 她非常高兴 立刻决定去饭店大吃一顿 到了饭店 Younik看到琳琅满目的菜单 开始犯了选择困难症 这时作为顶级吃货的你恰好坐到了Younik的旁桌 你决定发扬一下雷