WEEK 11 E 选做题1 东东与 ATM

2023-05-16

题目

一家银行计划安装一台用于提取现金的机器。
机器能够按要求的现金量发送适当的账单。
机器使用正好N种不同的面额钞票,例如D_k,k = 1,2,…,N,并且对于每种面额D_k,机器都有n_k张钞票。
例如,
N = 3,
n_1 = 10,D_1 = 100,
n_2 = 4,D_2 = 50,
n_3 = 5,D_3 = 10
表示机器有10张面额为100的钞票、4张面额为50的钞票、5张面额为10的钞票。
东东在写一个 ATM 的程序,可根据具体金额请求机器交付现金。
注意,这个程序计算程序得出的最大现金少于或等于可以根据设备的可用票据供应有效交付的现金。

Input

程序输入来自标准输入。 输入中的每个数据集代表特定交易,其格式为:Cash N n1 D1 n2 D2 … nN DN其中0 <= Cash <= 100000是所请求的现金量,0 <= N <= 10是 纸币面额的数量,0 <= nk <= 1000是Dk面额的可用纸币的数量,1 <= Dk <= 1000,k = 1,N。 输入中的数字之间可以自由出现空格。 输入数据正确。

Output

对于每组数据,程序将在下一行中将结果打印到单独一行上的标准输出中。

Sample Input

735 3 4 125 6 5 3 350
633 4 500 30 6 100 1 5 0 1
735 0
0 3 10 100 10 50 10 10

Sample Output

735
630
0
0

Hint

第一个数据集指定一笔交易,其中请求的现金金额为 735。 机器包含3种面额的纸币:4张钞票 125、6张钞票 5和3张钞票 350。 机器可以交付所需现金的确切金额。
在第二种情况下,机器的票据供应不能满足所要求的确切现金数量。 可以交付的最大现金为 630。 请注意,在机器中组合钞票以匹配交付的现金有多种可能性。

在第三种情况下,机器是空的,没有现金交付。 在第四种情况下,请求的现金金额为 0,因此机器不交付现金。

思路

这是一个多重背包问题,背包容量即为要求支付的现金金额,每个物品的质量与价值均为钞票面值。
使用二进制拆分来处理每个物品n件这一条件,进而该问题转化为0-1背包问题。
每个状态dp[i][j]表示考虑前i件物品,容量为j时可取到的最大价值。

代码

#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>

using namespace std;

const int N = 10000 + 5;
const int M = 100000 + 5;
int cash, n, c[11], v[11], vv[N], dp[M];

int main() 
{
	while (scanf("%d %d",&cash,&n)!=EOF) 
	{
		memset(dp, 0, sizeof(dp));
		for (int i = 1; i <= n; i++)
			scanf("%d %d", &c[i], &v[i]);
		int cnt = 0;
		for (int i = 1; i <= n; i++) 
		{
			int now = c[i];
			for (int j = 1; j <= now; j <<= 1) 
			{
				cnt++;
				vv[cnt] = j * v[i];
				now -= j;
			}
			if (now > 0) 
			{
				cnt++;
				vv[cnt] = now * v[i];
			}
		}
		for (int i = 1; i <= cnt; i++)
			for (int j = cash; j >= vv[i]; j--)
				dp[j] = max(dp[j], dp[j - vv[i]] + vv[i]);
		printf("%d\n", dp[cash]);
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WEEK 11 E 选做题1 东东与 ATM 的相关文章

随机推荐

  • 如何关闭windows11搜索页面中的推荐新闻

    打开设置 xff0c 隐私与安全 xff0c 搜索权限 xff0c 更多设置 xff0c 关闭搜索要点 效果
  • 关于 windows 卸载 入门 Get Started 应用 Windows功能体验包

    前言 xff1a 不建议强制卸载 在开始菜单右键查看应用设置 xff0c 跳转到了Windows功能体验包 xff0c 由此推测它应该是其他应用的一部分 xff0c 可能不好删除 使用everything搜索getstarted xff0c
  • 电脑时间长自动关机,睡眠后自动关机休眠,如何保持不关机

    打开控制面板 xff0c 找到电源选项 xff0c 打开高级电源设置 找到睡眠 xff0c 在此时间后休眠 xff0c 把数值改为0 xff0c 变成从不 之后电脑就会进入睡眠状态 xff0c 不会自动关机休眠 xff0c 可以随时唤醒
  • 【A200】 TX1核心 JetPack4.6.2版本如何修改DTB文件测试全部SPI

    大家好 xff0c 我是虎哥 xff0c 很长时间没有发布新内容 xff0c 主要是这段时间集中精力 xff0c 研究DTB设备树的修改 xff0c 以适配不同载板 xff0c 同时也是专门做了一个TX1 amp TX2核心 xff0c 双
  • windows下使用python生成安装包(可实现安装和卸载等)

    在实际生活中 xff0c 每个人都是通过使用安装包的方式对软件进行安装和卸载 xff0c 这样才能让每个人都不需要懂代码就能使用我们编写的软件 那么python编写的软件应该怎样实现这个过程尼 xff1f 下面就进行详细的讲解 一 使用py
  • idea翻译插件

    平常在使用idea工具开发项目或者是追源码时 xff0c 遇见很多不认识的代码可能需要复制然后粘贴到百度翻译很麻烦 xff0c 今天给大家带带来一个idea翻译插件 xff0c 安装方便 xff0c 使用方便 xff0c 还不收费 xff0
  • Java设计模式之模板模式

    目录 模板模式的介绍 模板模式的案例 模板模式的优缺点 总结 模板模式的介绍 定义一个操作中算法的骨架 xff0c 而将一些步骤延迟到子类中 xff0c 模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤 通俗易懂的话来说
  • Java设计模式之装饰器模式

    装饰器模式是什么 装饰器模式是指给一个类增强一些方法 xff0c 对其做一些包装 xff0c 但是不会影响改变原本类 解决了什么问题 xff1a 假设有一个炸鸡接口 xff0c 定义了一个制作炸鸡的方法 xff0c 麦当劳和肯德基和德克士对
  • Spring boot+Spring security+JWT实现前后端分离登录认证及权限控制

    借鉴文章 xff1a Springboot 43 Spring Security 实现前后端分离登录认证及权限控制 I am Rick Hu的博客 CSDN博客 springsecurity前后端分离登录认证 最近一段时间 xff0c 公司
  • 从源码理解SpringBootServletInitializer的作用

    写在前面 xff1a 各位读友们好 xff0c 最近已经很久没有更新文章了 xff0c 并不是觉得写文章没意思之类的 xff0c 笔者很希望能在 34 乱七八糟 34 的互联上做一些开源 xff08 能力有限 xff0c 先做现有技术和思想
  • 深入理解Linux内核select多路复用原理

    写在前面 xff1a 本文以Linux2 6 0的内核源码进行讲解 xff0c 使用x86 32位机讲解 多路复用原理 讲多路复用的原理 xff0c 那么一定先要讲没有多路复用的弊端 传统的阻塞式 xff0c 进程一旦io读写就开始阻塞 x
  • Spring Cloud组件源码之LoadBalancer源码分析

    34 Spring 到底是春天的来临万物复苏 xff0c 还是春转夏的干燥又炎热呢 xff1f 34 Spring的来临让JavaEE走向了另一个高度 便捷的开发 xff0c 完美的生态 物极必反 xff0c 学习Spring的成本越来越低
  • Spring Cloud LoadBalancer自定义负载均衡策略

    由于原有的负载均衡组件Ribbon停止维护 xff0c 而完美的Spring生态怎能允许缺少负载均衡组件呢 xff1f Spring Cloud官方自己造出了Spring Cloud LoadBalancer来代替原有的Ribbon 由于是
  • JVM Shutdown Hook 机制原理以及源码分析

    写在前面 最近看众多框架源码的时候都看到使用到了Shutdown Hook机制 比如下图 xff1a SkyWalking Spring Tomcat等等框架 xff0c 几乎只要是Java层面的框架都会使用到此机制 所以 xff0c 借用
  • 【Jeston Orin】Orin nano 8G模块使用官方系统包生成标准烧写系统测试

    大家好 xff0c 我是虎哥 xff0c GTC 2023上 xff0c NVIDIA正式推出了面向边缘AI的新一代入门款开发套件 xff0c Jetson Orin Nano Developer Kit 虽说只是入门套件 xff0c 但据
  • Ubuntu(Linux)中如何放大终端字体

    Ubuntu中如何放大终端字体 Shift 43 ctrl 43 43
  • 【大数据】第三章:详解HDFS(送尚硅谷笔记和源码)

    什么是HDFS HDFS是 xff08 Hadoop Distributed File System xff09 的缩写 xff0c 也即Hadoop分布式文件系统 它通过目录树定位在分布式场景下 在不同服务器主机上的文件 它适用于一次写入
  • CSP第一次模拟 A 咕咕东的奇遇

    题目描述 xff1a 有一个圆环 xff0c 由字母表中字母首尾相接组成 环上有一个指针 xff0c 最初指向a 每次可顺时针或逆时针旋转一格 例如 xff1a a顺时针转到b xff0c 逆时针转到z 现在有一个字符串 xff0c 求需要
  • WEEK 5 B TT's Magic Cat

    题目 xff1a Thanks to everyone s help last week TT finally got a cute cat But what TT didn t expect is that this is a magic
  • WEEK 11 E 选做题1 东东与 ATM

    题目 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机器都有n k张钞