[POJ1742 Coins]DP

手把手教你用ROS2 Humble给PX4无人机写个“画圆”程序:从C++代码到Gazebo仿真全流程 本文详细介绍了如何使用ROS2 Humble和PX4飞控实现无人机圆形轨迹控制,涵盖从环境配置、Gazebo仿真到C++代码实现的完整流程。通过实战教程,读者将掌握轨迹跟踪仿真的核心技术,包括ROS2与PX4的通信接口、圆形轨迹算法设计及Gazebo仿真调试技巧。 阅读详情

题目链接 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;
}


从仿真到部署:基于ROS2与Gazebo的UR5e机械臂全流程控制实践 本文详细介绍了基于ROS2与Gazebo的UR5e机械臂全流程控制实践,从环境准备、模型构建到控制器开发和仿真优化,最终实现真实机器人部署。通过实战案例和避坑指南,帮助开发者掌握机器人仿真与控制的关键技术,提升UR5e机械臂在物料分拣等任务中的性能与稳定性。 阅读详情

相关推荐

【AI 编程工具进阶用法】如何在Cursor、Trae等工具中使用Skills

OpenSkills是一个开源项目,用于在Cursor、Trae等AI编程工具中添加可复用、可组合的"能力模块"。安装流程包括:1)全局安装OpenSkills CLI工具;2)选择安装Anthropic官方Skills到项目或全局;3)创建AGENTS.md文件同步Skills;4)在AI工具中调用Skills。此外还介绍了UI/UX Pro Max Skill项目,通过npm安装后可为AI添加设计能力。这些Skills相当于为AI工具安装"高级技能包"

肌肉金轮的博客 3542

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

深入Luckfox Pico的Web界面:从Angular前端到CGI后端的RV1106 IPCWeb全栈解析

本文深入解析了基于瑞芯微RV1106芯片的Luckfox Pico设备上,IPCWeb全栈解决方案的架构与部署。详细介绍了如何通过SDK编译配置,将现代Angular前端框架与高效的C++ CGI后端结合,并利用nginx和FastCGI在嵌入式环境中构建稳定、高性能的Web管理界面,为物联网设备开发提供了完整的实战参考。

3a9bq4r8t2y的博客 275

POJ - 1742 Coins 背包dp变形

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

GeN的博客 307

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 248

基于Q-learning的无人机三维路径规划(含完整C++代码)

基于Q-learning的无人机三维路径规划(含完整C++代码)

weixin_54186646的博客 1万+

【题解】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

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9404

[POJ 1742] Coins 【DP】

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

weixin_30794499的博客 75

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

01 Python学习总结:Python简介及入门

Python 是一门高级编程语言,以其简洁、易读和强大的功能而广受欢迎。它适用于多种应用场景,包括 Web 开发、数据分析、人工智能、自动化脚本等。以下是 Python 的简介及入门知识总结,帮助你快速了解并开始学习 Python。

数据知道的博客 1万+

POJ_1742 Coins(DP)

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

EaShion1994的专栏 511

华为OD机试 - 整型数组按照个位数排序(Java 双机位C卷 100分)

华为OD机试 双机位C卷题库疯狂收录中,刷题。

学Java,找哪吒 349

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

poj 1742 Coins dp 多重背包 优化

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

ned_chu的博客 555

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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、付费专栏及课程。

余额充值