[POJ1742 Coins]DP

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件 最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e... 阅读详情

题目链接 http://poj.org/problem?id=1742

Coins
Time Limit: 3000MS Memory Limit: 30000K
Total Submissions: 31612 Accepted: 10756

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


这题和HDU 2844是一模一样的,但是HDU的数据比较弱,用二进制优化后的代码是无法在poj上面通过的,会超时。

HDU 2844 用二进制优化 http://blog.youkuaiyun.com/chenninggo/article/details/48321197

这题还是要用dp,记录该种硬币在和为 i 时用了几枚

具体看代码

/*
用dp记录当前i价值能不能组成
用sum数组记录组成i价值时用了多少枚该种硬币,注意该种硬币的使用次数不能超过该硬币所拥有的数目
当当前i价值无法组成时,进行动归
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n, m;
int dp[100010], sum[100010];
int val[110], c[110];
int main()
{
//	freopen("input.txt", "r", stdin);
	while (scanf("%d%d", &n, &m) != EOF && n && m)
	{
		for (int i = 1; i <= n; i++)
			scanf("%d", &val[i]);
		for (int i = 1; i <= n; i++)
			scanf("%d", &c[i]);
		memset(dp, 0, sizeof(dp));
		dp[0] = 1;
		int ans = 0;
		for (int i = 1; i <= n; i++)
		{
			memset(sum, 0, sizeof(sum));
			for (int l = val[i]; l <= m; l++)
			{
				if (!dp[l] && dp[l - val[i]] && sum[l - val[i]] < c[i])
				{
					dp[l] = 1;
					sum[l] = sum[l - val[i]] + 1;
					ans++;
				}
			}
		}
		printf("%d\n", ans);
	}
	return 0;
}


boost::circular_buffer缓行缓冲区 1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc... 阅读详情

相关推荐

N5105 PVE UEFI核显直通Windows:从黑屏到HDMI输出的实战调优

本文详细介绍了在N5105处理器上实现PVE UEFI核显直通Windows的实战调优方法。针对黑屏和HDMI音频无法识别等常见问题,提供了系统参数调整、驱动模块加载、虚拟机配置等解决方案,帮助用户成功实现核显直通并优化性能。

weixin_42566424的博客 203

Coins/POJ 1742/DP

Coins/POJ 1742/DP 题目 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 ni...

weixin_45600829的博客 157

BES (恒玄)HFP通话笔记

1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。

飞天鱼 685

POJ - 1742 Coins 背包dp变形

POJ 1742 首先多重背包有一种普通的二进制优化,然后这题还可以加一个判断如果,a[i] * c[i] &gt;= m 的话,那就和完全背包一样,不用多重背包。这样应该能过。 第二种做法,是参考了完全背包,完全背包可以用O(nm)的复杂度完成,是因为,遍历m的时候没有数量的限制。那对于这题多重背包,就要考虑在dp里面加上当前物品用掉的数量信息,从而达到完全背包的复杂度。所以用dp[i][j...

GeN的博客 307

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1079

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 384

【题解】Coins POJ - 1742 ⭐⭐ 【dp 多重部分和】

Coins POJ - 1742 给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数。 Input 多组数据,每组数据前两个数字为n,m。n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数。 (n<=100,m<=100000,面额<=100000,每种个数<=1000) Output RT Examples Sample I...

Suprit's blog 846

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

[POJ 1742] Coins 【DP】

题目链接:POJ - 1742 题目大意 现有 n 种不同的硬币,每种的面值为 Vi ,数量为 Ni ,问使用这些硬币共能凑出 [1,m] 范围内的多少种面值。 题目分析 使用一种 O(nm) 的 DP (据说这是类多重背包?),枚举每一种硬币,对于每一种硬币 i 枚举每一个面值 j ,如果这个面值 j 使用前 i-1 种硬币已经可以凑出,就直接跳过,否则尝试加入一个硬币 i ...

weixin_30794499的博客 75

YOLOv11的对比学习预训练改进-(通过SimCLR预训练增强特征提取)

本文介绍了将SimCLR对比学习预训练与YOLOv11目标检测模型相结合的创新方法。文章首先概述了目标检测领域的发展现状和YOLOv11的架构优化,包括主干网络、特征金字塔和检测头的改进设计。其次详细解析了SimCLR对比学习的核心原理,涵盖数据增强、投影头设计和NT-Xent损失函数。最后探讨了如何将对比学习与目标检测有效结合,通过特征空间对齐和渐进式微调策略提升模型性能。该方法显著增强了特征提取能力,提高了检测精度和训练效率,特别是在小目标和遮挡目标的检测上表现突出。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 685

无人机导航中的坐标系统详解与转换实现

本文系统介绍了无人机导航中常用的坐标系及其转换方法。主要内容包括:1) 四种关键坐标系(大地坐标系ECEF、经纬度LLA、北东天坐标系NED、机体坐标系)的定义和特点;2) 坐标系间的转换原理与实现,重点讲解LLA与ECEF的互转公式及ECEF与NED的转换方法;3) 提供可直接使用的C++实现代码,包括基于WGS84椭球模型的精确转换算法。这些内容为无人机导航系统开发提供了实用的坐标系处理方案,能够有效解决多源数据在不同坐标系下的统一表示问题。

电脑管家 375

POJ_1742 Coins(DP)

题目链接 题解: 这道题和杭电上的2844是一样的,但是poj上面的数据可能要强一些。在杭电上可能模板多重背包就可以过,但是这里就要变通一下,今天再做到,配合着杭电2844,把这道题的做法好好整理了一下,一共三种方法dp。 方法一:多重背包记录状态 因为题目只要求得到有多少个可达,所以可以用bool表示dp数组,变化递推式,最后压线AC。 递推式变化为 dp[i] |= dp[i

EaShion1994的专栏 511

RK3568笔记二:部署手写数字识别模型

部署手写数字识别模型,使用手写数字识别(mnist)数据集训练了一个 LENET 的五层经典网络模型。Lenet是我们的深度学习入门的必学模型,是深度学习领域中的经典卷积神经网络(CNN)架构之一。过程分为:训练,导出ONNX,转化RKNN,测试。

1169

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

poj 1742 Coins dp 多重背包 优化

《挑战》练习题,楼天城男人八题。

ned_chu的博客 555

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

POJ 1742 Coins——dp

#include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; const int maxn = 1e5 + 10; int n, m, a[maxn], c[maxn], dp[maxn]; int main() {...

hao_zong_yin的博客 361

Statistics and Machine Learning Toolbox

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

POJ 1742 Coins (dp)

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

TaoSama's Microcosm 488

POJ1742 Coins(DP)

Coins 思路 没分析复杂度写了个二进制拆分,然后做010101背包O(nlog(c)m)>10e7了O(nlog(c)m) > 10e7了O(nlog(c)m)>10e7了,所以还是想办法优化吧。 我们引入一个needneedneed数组,need[j]need[j]need[j]表示,在枚举到第iii件物品的时候要得到jjj这个状态,需要物品iii的最小个数。 所以在转移的时候我们只要考虑$need[j - a[i]] < c[i] ? ,如果是符合要求的,并且,如果是符合要求

lifehappy 379

POJ 1742 Coins (DP)

题目类型  DP 题目意思 给出拥有的金钱 k ( 0 其中道路由四个变量 S  D  L T 描述  S 表示起点城市 D 表示终点城市 L 表示路的长度 T 表示经过这条路要收的过路费 现在问在不花费超过 k 的情况下从城市 1 到 n 最短的路径是多少 解题方法 DFS + 剪枝 当钱不够付过路费时终止 当目前的路径长度比前面搜到的最好

yunyouxi0's blog 918

【POJ 1742】Coins【DP】【多重背包】

题目大意: 题目链接:http://poj.org/problem?id=1742 有nnn种面值不同的硬币,每种有c[i]c[i]c[i]个。求1到mmm有多少面值可以用这些硬币凑成? 思路: 很明显的完全背包。。。 前面WA,TLE,RE,CEWA,TLE,RE,CEWA,TLE,RE,CE全是用二进制拆分做的。。。后来实在没办法打了书上的方法。 设f[i]f[...

stoorz 446

Coins [POJ1742] [DP]

Description 给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数。 Input 多组数据,每组数据前两个数字为n,m。n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数。 (n<=100,m<=100000,面额<=100000,每种个数<=1000) ...

weixin_30695195的博客 119

POJ1742 Coins DP

题意: 给n种硬币,每种ci个。问在1到m的范围内,有多少种面值的硬币组合。 思路: 取一个bool dp[m]的数组。true代表可以取到,false代表不能取到。 当取到val[i]时,假设1到i-1可以构成最大值为mx,最小值显然为0. 所以当取now=val[i],对dp的影响区间为[now,mx+now]. 枚举now if(dp[j-now])dp[j]=true; 代

Aszxqw 972

POJ 1742 coins (dp)

题目大意是给出一些面值的硬币和数量。问在1-m中能凑出多少种钱。 设 dp[i+1][j] 为前i种凑成j元第i种最多剩下多少。 1. dp[i+1][j] = mi ( dp[i][j]>=0) 前i-1种已经能凑成j了 2.dp[i+1][j] = -1 ( j<a[i] || dp[i+1][j-a[i]] <=0 ) 3. dp[i+1][j] ...

aiezhen1717的博客 124

poj 1742 coins dp

题目描述银岛上的人使用银岛币。这些金币分别价值A1,A2,A3…An银岛币。一天托尼打开他的钱包,发现有一些银岛币。他决定在附近商店买一个非常好的表。他想给商店正好的钱(就是商店不用找零)并且他知道表的价格不会超过m银岛币。但他不知道表的精确价格。 你的任务是写一个读入A1,A2,A3…An和C1,C2,C3…Cn的程序。(C1,C2,C3…Cn表示托尼有A1,A2,A3…An的个数)判断1到m中

A_loud_name 411

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

【POJ】剑指DP:1742.Coins

0.概述 楼天城男人八题之一,据说是最简单的一题。 有若干种面值的硬币,每种面值的数量都是有限的。问用这一堆硬币,一共能拼凑出多少种总价值(最大到m)? 1.分析 背包问题,一共能拼成多少种总价值,那就从1开始一直数到m,设当前为w。背包容量为w,问题转为能否把背包恰好装满。 是多重背包问题。 多重背包找可行性,那么是有套路的。写dp表,dp[i][j]的含义是用前i种硬币,组成总数为j,第i种硬币还剩多少,有一说一,这么绕,让我自己想肯定想不出。 那么对于dp[i+1][j],其含义是:用前i+1种硬币,

四轩茶屋 281
上一篇: [HDU 2844 Coins]DP+二进制优化+多重背包
下一篇: The 13th Zhejiang Provincial Collegiate Programming Contest D The Lucky Week
chenningGo
博客等级 码龄11年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值