[POJ 1742] Coins 【DP】

题目链接:POJ - 1742

 

题目大意

现有 n 种不同的硬币,每种的面值为 Vi ,数量为 Ni ,问使用这些硬币共能凑出 [1,m] 范围内的多少种面值。

 

题目分析

使用一种 O(nm) 的 DP (据说这是类多重背包?),枚举每一种硬币,对于每一种硬币 i 枚举每一个面值 j ,如果这个面值 j 使用前 i-1 种硬币已经可以凑出,就直接跳过,否则尝试加入一个硬币 i ,看是否能凑出 j 。需要满足 (f[j - Vi] == true) && (UseNum[j - Vi] + 1 <= Ni) ,这样就可以了。对于每一个 i ,枚举 j 之前将 UseNum 数组清零。

 

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>using namespace std;const int MaxN = 100 + 5, MaxM = 100000 + 5;int n, m, Ans;
int V[MaxN], Num[MaxN], UseNum[MaxM];bool f[MaxM];int main()
{while (true) {scanf("%d%d", &n, &m);if (n == 0 && m == 0) break;for (int i = 1; i <= n; ++i) scanf("%d", &V[i]);for (int i = 1; i <= n; ++i) scanf("%d", &Num[i]);Ans = 0;for (int i = 1; i <= m; ++i) f[i] = false;f[0] = true;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) UseNum[j] = 0;for (int j = V[i]; j <= m; ++j) {if (f[j]) continue;if (f[j - V[i]] && UseNum[j - V[i]] + 1 <= Num[i]) {f[j] = true;UseNum[j] = UseNum[j - V[i]] + 1;}}}for (int i = 1; i <= m; ++i) if (f[i]) ++Ans;printf("%d\n", Ans);}return 0;
}

  

转载于:https://www.cnblogs.com/JoeFan/p/4165769.html

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

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

相关文章

ubuntu 18.04 显卡驱动

1. 禁用ubuntu默认显卡驱动&#xff0c;在/etc/modprobe.d/目录下创建blacklist-nouveau.conf文件并添加以下内容 blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatu 2. 刷新内核&#xff0c;重启 update-initramfs -u reboo…

UE4 查看打包文件内容

UnrealPak.exe pak文件 -list -cryptokeys工程下Crypto.json文件 >输出文件

【iOS】Quartz2D图片剪切

一、使用Quartz2D完成图片剪切1.把图片显示在自定义的view中  先把图片绘制到view上。按照原始大小&#xff0c;把图片绘制到一个点上。  代码&#xff1a; 1 - (void)drawRect:(CGRect)rect 2 { 3 UIImage *image2[UIImage imageNamed:"me"]; 4 [image2…

InstallShield 2020

1.新建工程&#xff1a;HOME-New-Basic MSI 2.Gereral Information设置&#xff08;根据需求自行设置&#xff0c;例如下图&#xff09; 3.Files and Folders设置 a.将需打包工程拖拽至下方目标文件夹内 b.创建新的Feature c.设置结果如下 4.Shortcuts设置 a.Desktop右键-New…

iOS项目开发— CoreLocation的定位服务和地理编码与发编码实现

一、CoreLocation简介 1.在移动互联网时代&#xff0c;移动app能解决用户的很多生活琐事&#xff0c;比如 &#xff08;1&#xff09;导航&#xff1a;去任意陌生的地方 &#xff08;2&#xff09;周边&#xff1a;找餐馆、找酒店、找银行、找电影院 2.在上述应用中&#xff0c…

Target “xxx” links to target “Boost::filesystem“ but the target was not found

Boost::system Boost::thread Boost::timer等等替换为${Boost_LIBRARIES}即可

eclipse 断点调试快捷键

&#xff08;1&#xff09;CtrlM &#xff0d;&#xff0d;切换窗口的大小&#xff08;2&#xff09;CtrlQ &#xff0d;&#xff0d;跳到最后一次的编辑处&#xff08;3&#xff09;F2 &#xff0d;&#xff0d;当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时…

cygwin和mingw的区别

1、使用区别&#xff1a; cygwin/gcc和MinGW都是gcc在windows下的编译环境&#xff0c;但是它们有什么区别&#xff0c;在实际工作中如何选择这两种编译器。 cygwin/gcc完全可以和在linux下的gcc化做等号&#xff0c;这个可以从boost库的划分中可以看出来端倪&#xff0c;cygw…

轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单 demo

最新版wangEditor&#xff1a; 配置说明&#xff1a;http://www.wangeditor.com/doc.html demo演示&#xff1a;http://www.wangeditor.com/wangEditor/demo.html 下载地址&#xff1a;https://github.com/wangfupeng1988/wangEditor ----------------------------------------…

Linux下解决发布Qt程序报错:it could not find or load the Qt platform plugin “xcb” in “”

简述 用Qt5.8版本在ubuntu16.04版本下编写Qt应用程序&#xff0c;生成release版本并打包&#xff0c;到另一台无Qt环境的linux系统中运行。 网上通常是按以下几个步骤进行&#xff1a; 1、生成release程序。 2、拷贝release程序到一个新文件夹&#xff0c;执行一个脚本文件。脚…

ViewGroup之getScrollX()

举个例子&#xff0c;一个横向的ViewGroup&#xff0c;如果每个View的宽度为300&#xff0c;那么当前显示第一个View的时候getScrollX()返回值为0&#xff0c;当你 向左移动第一个View&#xff0c;移动距离为30&#xff0c;那么此时getScrollX()的返回值为30&#xff0c;如果当…

Linux环境中Qt程序的手工发布

Qt 5.7.0 编写的程序需要部署到一台没有安装Qt的目标机器上&#xff0c;程序采用C与QML混合编程&#xff0c;QML做界面&#xff0c;C写逻辑。 环境说明 开发环境 Ubuntu 16.04.1 LTS 运行环境 CentOS 7.2.1511 下面描述这个手工操作的发布过程。 1、在开发环境中采用Re…

VS2017编译UE4.19.2报错

error C4577: 在未指定异常处理模式的情况下使用了 "noexcept"&#xff1b;不一定会在异常时终止。指定 /EHsc 修改 VCToolChain.cs&#xff0c; 在 AppendCLArguments_Global 函数中增加 Arguments.Add("/EHsc");

OpenGL-坐标系

笛卡尔坐标系 二维绘图&#xff1a;笛卡尔坐标有一个X轴和一个Y轴组成&#xff0c;X轴为水平方向&#xff0c;Y轴为垂直方向&#xff0c;X和Y相互垂直二维笛卡尔坐标系 三维绘图&#xff1a;笛卡尔坐标多了一个Z轴&#xff0c;Z轴同时垂直于X和Y轴。Z轴的实际意义代表着三维物…

Heap Sort

Heap(An array visualized as a complete binary tree): Heap Operations: Insert,                         O(log(n))  Add it to the end of the tree and bubble it up. Find Max(return the element with maximum key),   O(1)Extract Max(fi…

UML类图与类间六种关系表示

1.类与类图 类封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性,操作,关系的对象集合的总称. 类图是使用频率最高的UML图之一. 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助开发人员理解系统,它是系统分析和设计阶段的重要产物,也是系统编码和测试…

C# 延迟初始化

一个对象的延迟初始化意味着该对象的创建将会延迟至第一次使用该对象时。&#xff08;在本主题中&#xff0c;术语“延迟初始化”和“延迟实例化”是同义词。&#xff09;延迟初始化主要用于提高性能&#xff0c;避免浪费计算&#xff0c;并减少程序内存要求。 以下是最常见的方…

FindWindowEx 遍历所有窗口

FindWindowEx 唯一麻烦是第2个参数的指定 . Explore 下窗口是Z序的 , 实际上就是根据 第一个参数 和 第2个参数 来找 第2个参数后的一个窗口: HWND child 0; child FindWindowEx ( NULL , child ,NULL,NULL); 这样 , child 就是一个Explore , 然后 , 通过循环能够找到…

jQuery介绍 DOM对象和jQuery对象的转换与区别

jQuery Hello World程序 <script type“text/javascript” src“xxx//jquery-x.y.z.js">引入jQuery.存在两个版本,jquery-x.y.z.min.js是精简压缩版,不带min的是开发版,代码中的注释和缩进等都被保留了.注意路径中的”/"需要转义,即用”//“.$()符号将DOM对象转…

PlacementBrowser源码分析

PlacementBrowser的源码在 Editor/PlacementMode下面 一、Placement分类的创建 1. Placement分类被存贮在 FPlacementModeModule 的成员变量 Categories里面。 2. 在 FPlacementModeModule::StartupModule() 创建出所有的Placement分类 3. 每个大类由RegisterPlacementCat…