POJ 1742 Coins

POJ 1742 Coins(多重背包,进阶指南) 算法竞赛进阶指南, 281 页, 多重背包(此处代码抄书上的) 题目意思: n种硬币,每种硬币的币值 A[i], 数量C[i], 给出一个数值m 求出可以拼成 1 ~ m 这 m种币值的哪几种? 本题要点: 1、 多重背包 的 “直接拆分法”, bool f[MaxM]; //在阶段i, f[j] 表示前i种硬币是否能拼成面值j 在状态i(遍历到第i中硬币时候) for(int k = m; k >= A[i]; --k) //币值 f[k] = f[k] | f[k - A[i]]; { f 阅读详情
Coins
Time Limit: 3000MS Memory Limit: 30000K
Total Submissions: 21551 Accepted: 7343

Description

People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without change) and he known the price would not more than m.But he didn't know the exact price of the watch. 
You are to write a program which reads n,m,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of value A1,A2,A3...An then calculate how many prices(form 1 to m) Tony can pay use these coins. 

Input

The input contains several test cases. The first line of each test case contains two integers n(1<=n<=100),m(m<=100000).The second line contains 2n integers, denoting A1,A2,A3...An,C1,C2,C3...Cn (1<=Ai<=100000,1<=Ci<=1000). The last test case is followed by two zeros.

Output

For each test case output the answer on a single line.

Sample Input

3 10
1 2 4 2 1 1
2 5
1 4 2 1
0 0

Sample Output

8
4

Source

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int N, V;
int v[110], n[110]; 
int f[100010];

int main(){
	int i, j, k;
	while(scanf("%d%d", &N, &V) != EOF, N != 0 || V != 0){
		for (i = 0; i < N; i++){
			scanf("%d", &v[i]);
		}
		for (i = 0; i < N; i++){
			scanf("%d", &n[i]);
		}
		memset(f, 0xff, sizeof(int) * (V + 1));
		f[0] = 0;
		for (i = 0; i < N; i++){
			for (j = 0; j <= V; j++){
				if (f[j] >= 0){
					f[j] = 0;
				}else if (j >= v[i] && f[j - v[i]] >= 0 && f[j - v[i]] < n[i]){
					f[j] = f[j - v[i]] + 1;
				}
			}
		}
		k = 0;
		for (i = V; i >= 1; i--)
			if (f[i] >= 0) k++;
		printf("%d\n", k);
	}
	return 0;
}
/*
f[i][j]表示前i种钱币,组成面值j,使用第i种钱币最少的数量
明明只是求j的可达性,却通过这么一个巧妙的状态,
使得复杂度减至O(N*V),N是组数
带二进制优化的分组背包是O(sum(log(num[i]))*V)
对于这状态的另一种理解
普通背包
j = 0时
遍历 v[i], 2 * v[i], 3 * v[i],..., n[i] * v[i]
j = 1时
遍历 1 + v[i], 2 + 2 * v[i]...
j = v[i]时
遍历 2 * v[i], 3 * v[i]...
发现和上面重了,这块重复的搜索很浪费啊,怎么解决呢
看到,如果n[i]有无穷大,那么j>=v[i]的会完全与j=0...v[i]-1的重复
但n[i]是有限的,只循环j=0...v[i]-1,有些数量不够,
需要借助之前物品的,就遍历不到了
一种想法是,尽量节省地使用物品i,记录i在凑成j时最少使用的数量
如果之前物品能够凑出j,那就不用使用物品i了
这样节省地遍历下j=0...v[i]-1,算起来时间复杂度还是O(N*V)
*/



DEAP数据集实战指南:从脑电信号到情绪分类的完整流程解析 本文提供了DEAP数据集在脑电信号情绪识别领域的完整实战指南。详细解析了数据下载、结构理解、频带功率特征提取等核心步骤,并演示了如何构建和评估机器学习分类模型,为研究者实现从原始脑电信号到情绪分类的完整流程提供了清晰路径。 阅读详情

相关推荐

香橙派5玩转SATA SSD:一个被忽略的overlays配置项,让你的Ubuntu系统飞起来

本文详细介绍了如何在香橙派5上通过配置`overlays=ssd-sata`启用SATA SSD作为系统启动盘,大幅提升Ubuntu系统的性能。文章深入解析了设备树覆盖的工作原理,提供了完整的配置流程和性能优化建议,帮助开发者充分发挥香橙派5的硬件潜力。

weixin_30787531的博客 219

POJ--1742 Coins(DP,多重背包)

POJ–1742 Coins 给定N种硬币,其中第 i 种硬币的面值为Ai,共有Ci个。 从中选出若干个硬币,把面值相加,若结果为S,则称“面值S能被拼成”。 求1~M之间能被拼成的面值有多少个。 输入格式 输入包含多组测试用例。 每组测试用例第一行包含两个整数N和M。 第二行包含2N个整数,分别表示A1,A2,…,AN和C1,C2,…,CN。 当输入用例N=0,M=0时,表示输入终止,且该用例无...

qq_43148759的博客 342

labview设置工业摄像头外部触发

使用labview对海康MV-CA013-GM相机设置外部触发。 一、硬件部分 1、硬件引脚定义 2、触发模式设置 相机的触发模式分为两种,一种是内触发模式、另外一种是外触发模式。 3、接线图 信号线的地要跟给信号的设备共地。信号线给高电平时触发拍照。 二、软件部分 1、创建vision acquisition 2、选择使用的摄像头。 3、选择模式。 4、在Acquisition Control中设置这些选项。 5、设置保存图片路径 设置保存路径和保存图片的格式。点击完成即可 参考:https:/

qq_43493715的博客 5665

POJ_1742_Coins_(动态规划,多重部分和)

描述 http://poj.org/problem?id=1742 n种不同面额的硬币 ai ,每种各 mi 个,判断可以从这些数字值中选出若干使它们组成的面额恰好为 k 的 k 的个数. 原型: n种不同大小的数字 ai ,每种各 mi 个,判断是否可以从这些数字之中选出若干使它们的和恰好为 k . Coins Time Limit: 3000MS ...

aquz77529的博客 321

别再问ARM麒麟怎么装微信了!手把手教你用铠大师搞定Windows软件(飞腾/海思芯片实测)

本文详细介绍了如何在ARM架构的信创电脑(如飞腾/海思芯片)上使用铠大师安装和运行Windows软件,解决微信、Office等常用软件的兼容性问题。通过实测数据对比,铠大师在性能和易用性上显著优于传统方案,为麒麟系统用户提供了一套完整的解决方案。

weixin_28736355的博客 890

VsCode+JLink+GCC替代Keil开发GD32程序-个人总结

对个人使用vscode+Jlink开发GD32程序做了总结,供需要者参考。

MyCollege1999的博客 2762

poj1742-Coins-acm解题报告

/*  cpp : poj1742-Coins      注意,while(~scanf("%d%d",&n,&m),n+m)表示n和m都能得到输入值,最后的值n+m不为0,     DP的部分画下表格就懂了 */ #include #include using namespace std; int dp[100005],sum[100005]; int v[105],c[

verylonglongago的博客 548

图像超分辨率在医学影像中的应用:如何用深度学习提升CT/MRI图像质量

本文探讨了深度学习驱动的图像超分辨率技术在医学影像(如CT/MRI)质量提升中的应用。文章分析了医学图像超分辨率在提升诊断信息含量、平衡保真度与临床相关性方面的独特挑战,并详细介绍了如何针对3D体数据特点定制模型架构、设计病理感知损失函数,以及解决高质量配对数据稀缺的策略。通过实战案例,阐述了从数据模拟、模型训练到临床评估的完整流程,旨在为医学影像的清晰化与诊断精准化提供有效解决方案。

weixin_29063681的博客 523

【POJ】【多重背包】1742 Coins

POJ 1742 Coins 题目 ◇题目传送门◆ 题目大意 有NNN种面值为aiaia_i的硬币,每种硬币有cicic_i个,求能凑成多少个111到MMM之间的面值。 思路 非常标准的多重背包。 我们定义f[i][j]f[i][j]f[i][j]为使用前iii种硬币能否凑成jjj。 可得状态转移方程:f[i][j]=f[i−1][j−k⋅a[i]]⋁f[i][j]...

IDDFS 282

界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算

引言:目前工程上主要有螺栓,过盈,焊接和胶粘四种常用的连接方式,本文基于ANSYS Workbench环境,引入内聚力模型来实现对胶粘结构界面开裂失效的计算,文中的界面失效参数为随意给定,不是工程实际测试数据,仅起到演示作用!1.问题的描述如图所示给出了胶粘结构的三维模型,该胶粘结构由上下钢板组成,中间通过胶粘接到一起。(胶不需要建模,其影响主要通过内聚力模型实现)上下板的材料为结构钢,...

weixin_29473667的博客 1万+

Camunda 7.x 系列【62】启动流程实例源码解析

为了更好的了解Camunda,接下来我们简单分析下启动流程实例相关源码

记录知识、锤炼自我 1171

POJ 1742 Coins 多重背包

POJ1742 Coins Time Limit:3000MS Memory Limit:30000K Total Submissions:47417 Accepted:15982 Description People in Silverland use coins.They have coins of value A1,A2,A3...An ...

CC_且听风吟丶的博客 489

OpenCV计算机视觉实战(3)——计算机图像处理基础

本文全面介绍了计算机视觉和数字图像处理的基础知识。从最基本的像素概念入手,详细讲解了图像在计算机中的表示方式,包括RGB、CMYK等色彩空间的工作原理及其应用场景。还系统分析了常见图像和视频文件格式的特点,梳理了计算机图像处理技术的发展历程,并重点介绍了OpenCV这一强大的开源计算机视觉库的功能与应用领域。

qq_30167691的博客 1739

POJ 1742/HDU2844 Coins 题解

POJ 1742/HDU2844 Coins 题解

Jeza SS 526

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Coins (POJ 1742)(多重背包QAQ)

Coins (POJ 1742) 【Time Limit: 3000MS Memory Limit: 30000K】 题意:n种货币,每种货币两个属性:a[ i ] (价值),c[ i ] (数量);商品价值上限m。问有多少种价格的商品可以不找零买到。 题解:这是一个多重背包的问题,可能会想到用二进制优化,但是算一下时间复杂度是过大了的,实际也会T。所以我们用另外一种方式来做: dp[ i ]用...

L_X_ 274

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ 1742 Coins(多重背包) DP

参考:http://www.hankcs.com/program/cpp/poj-1742-coins.html 题意:给你n种面值的硬币,面值为a1...an,数量分别为c1...cn,求问,在这些硬币的组合下,能够多少种面值,该面值不超过m 思路:设d[i][j]——前i种硬币,凑成总值j时,第i种硬币所剩余的个数。    默认d[i][j] = -1,代表无法凑成总值j   ...

weixin_33800593的博客 160

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ1742coins

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/xyc1719/article/details/80042739————————————————版权声明:本文为优快云博主「xyc1719」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明...

aoxieqian3601的博客 165

POJ 1742 Coins 【多重背包】【可行性问题】

POJ 1742 Coins  大致意思: 给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数。    Input 多组数据,每组数据前两个数字为n,m。n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数。 (n&lt;=100,m&lt;=100000,面额&lt;=100000,每种个数&lt;=1000)...

不甘 263

[POJ 1742] Coins

[题目链接] http://poj.org/problem?id=1742 [算法] 动态规划 + 贪心 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerr...

87

POJ1742-Coins

http://poj.org/problem?id=1742 #include<stdio.h> #include<string.h> int dp[100010],C[110],A[110],vis[100010]; int main(void) { int n,m,i,j,ans; while(scanf("%d%d",&n,...

weixin_30437481的博客 99

poj 1742 Coins

Coins Time Limit: 3000MS Memory Limit: 30000KTotal Submissions: 48194 Accepted: 16209 Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silver...

301

POJ1742 Coins 题解(AcWing 281,hdu 2844)

问题描述: 给定N种硬币,其中第 i 种硬币的面值为Ai,共有Ci个。 从中选出若干个硬币,把面值相加,若结果为S,则称“面值S能被拼成”。 求1~M之间能被拼成的面值有多少个。 解题思路: 这题很明显是个多重背包问题,只需设dp(i,j)dp(i,j)dp(i,j)为前iii种硬币能否组成面值SSS,根据多重背包的思路可以使用二进制优化每个物品数量可以解决,但是我提交了只在hud上过了,poj和acwing都TLE了。多重背包也能用优先队列优化,我提交后再三个平台都TLE了(???是我写的不够漂亮)? 这

weixin_39412108的博客 343

【POJ1742】Coins

关于多重背包的一道题。 首先看数据便知道朴素的多重背包无法通过,所以我们采用二进制拆分进行优化,(二进制优化点这里),这样就能顺利通过本题了。 这道题只是判断可行性,所以“价值”这一状态并没有什么用。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #i...

weixin_30886233的博客 129

[POJ1742 Coins]DP

题目链接 http://poj.org/problem?id=1742 Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 31612   Accepted: 10756 Description People in Silverland use c

chenningGo的博客 490

【POJ 1742】Coins

队列优化的多重背包~

Regina8023 1623
上一篇: POJ 1947 Rebuilding Roads
下一篇: POJ 2430 Lazy Cows
cmonkey
博客等级 码龄17年 50粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值