[POJ1742 Coins]DP

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南 本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。 阅读详情

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


MFC实现简单UDP通信(附完整源码) 阅读详情

相关推荐

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1169

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

BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试

本文介绍了如何基于BGE-M3开源模型实现一个简单的二分类情感分析任务,展示了NLP中经典的“预训练 + 微调”范式。首先,加载预训练模型和分词器,并构建分类头整合到模型中。接着,进行数据预处理并构建DataLoader。然后,定义优化器、损失函数和训练循环,进行模型微调。微调过程中,可以选择基于[CLS] token的单特征提取或基于池化策略的多特征融合。最后,通过验证与推理评估模型性能,并导出ONNX模型以适应生产环境。BGE-M3在语义表征任务中表现优异,适合作为文本分类、语义搜索等下游任务的基础模型

大鹏的专栏 1404

POJ - 1742 Coins 背包dp变形

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

GeN的博客 307

【VisualStdio】手把手教你做一个上位机(1)控件设计布局

网上有很多形形色色的制作上位机教程,有些写的挺好的,但是过于单调。

m0_73409202的博客 5436

unity中基于NGUI实现一张图片上在某个地方挖个洞

按照策划的要求,引导时只有被引导的图片是高亮的,其余地方都是黑色半透明,如下图所示: 对应的实现shader如下: Shader "Unlit/TutorialBg" { Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} _ClipRange0 ("Clip Vector

手机游戏开发 3698

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

BugkuCTF-PWN题pwn2-overflow超详细讲解

解题思路 1)计算出get_shell_的地址偏移量 2)算出来之后就直接溢出到后门函数 知识点 x64函数调用规则 解题之前我们先学下linux x64的函数调用规则。 x64机器在调用某个函数前,比如int func(int a, int b, int c, int d, int e, int f, int g, int h),首先他会把前6个参数从左往右存入到寄存器rdi、rsi、rdx、rcx、r8、r9,其余参数存入到栈里,保存的顺序是从右往左入栈。比如abcdef会存入到寄存器里,然后一次入栈h

am_03的博客 3013

[POJ 1742] Coins 【DP】

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

weixin_30794499的博客 75

RK3588 hdmirx 调试(含v4l2工具,edid编辑)

RK3588 Buildroot系统中调试HDMI-RX的过程,包括抓图、修改EDID数据、编辑EDID等操作。首先,通过logcat和寄存器信息查询HDMI-RX的状态,使用v4l2-ctl工具进行测试和修改EDID。

501846585_QQAndroid_java 2685

第78篇:AI辅助创意与设计工作流——Logo、海报、UI的自动化生成与迭代(操作教程)

在广告公司和设计团队摸爬滚打几年,我见过太多设计师为一个Logo的配色、一张海报的版式反复修改到深夜。自从AI绘画工具爆发,我就一直在琢磨,怎么把这些“黑科技”真正塞进设计师的日常流水线里,而不是让它们仅仅是个玩具。今天要聊的,就是一套我实践下来,能真正提升效率的AI辅助创意与设计工作流。我们不谈颠覆,只谈增效——如何用AI快速完成Logo、海报、UI的灵感生成、批量出图与智能迭代,把设计师从重复劳动中解放出来,聚焦在真正的创意决策上。

weixin_37464284的博客 539

POJ_1742 Coins(DP)

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

EaShion1994的专栏 511

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 642

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

poj 1742 Coins dp 多重背包 优化

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

ned_chu的博客 555

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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 919

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

余额充值