HDU 2844 Coins

【AI智能体】Codex + Seedance2.5 制作AI视频实战操作详解 阅读详情

传送门

多重背包,重量与价值相同,恰好装满。
和这个题差不多。有n种硬币,每种硬币都有一个数量和价值,问你拿这些硬币能恰好支付多少个价格(价格区间[1,m]),支付每个价格都可用全部的硬币。

方法就是将重量和价值视为相同,然后再恰好装满,所以dp[j]表示恰好拿取价值总和为j的硬币所获得的(最大,233)价值。可以想到,这个值要么是非法值,要么是j。
这个题给的硬币价值总和的上限太大了,肯定不能用作数组大小。而m的上限可以接受,用m当作数组大小就可以了,因为求解答案只会用到dp[1]~dp[m]。

另外想到:这道题即使硬币价值总和(V)比m小也没关系,因为是恰好装满,dp[V+1]及以后的值一定都是非法值。

这题本来没什么好说的,但是有个bug坑了一个小时,很烦。

用fill()会超时(>1000ms)!!!换成朴素的循环赋值就AC了(200+ms)。

结论就是:以后不再用fill(),其实根本没省几个字母。


#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std;                            // 多重背包,要求恰好装满

const int INF = 1e9;
int N, M;
int p[100];
int num[100];
int dp[100001];
int cnt;

void init()
{
	for (int i = 1; i <= M; i++)                // 不能用fill()!!!!!!!!!!!!!!!!!!用fill()就超时  
		dp[i] = -INF;
	//fill(dp + 1, dp + M + 1, -INF);           // 这他妈是什么鬼函数,用了直接超时(>1000ms),不用200+ms
	dp[0] = 0;
	cnt = 0;
}


int main()
{
	for (; ~scanf("%d%d", &N, &M);)
	{
		if (N == 0 && M == 0) break;
		for (int i = 0; i < N; i++)
			scanf("%d", &p[i]);
		for (int i = 0; i < N; i++)
			scanf("%d", &num[i]);
		init();
		for (int i = 0; i < N; i++)
		{
			if (p[i] * num[i] >= M)
			{
				for (int j = p[i]; j <= M; j++)
					dp[j] = max(dp[j], dp[j - p[i]] + p[i]);
			}
			else
			{
				int t;
				for (int k = 1; k < num[i]; k <<= 1)
				{
					t = p[i] * k;
					for (int j = M; j >= t; j--)
						dp[j] = max(dp[j], dp[j - t] + t);
					num[i] -= k;
				}
				t = p[i] * num[i];
				for (int j = M; j >= t; j--)
					dp[j] = max(dp[j], dp[j - t] + t);
			}
		}
		for (int i = 1; i <= M; i++)
			if (dp[i] > 0) cnt++;                   // 等价dp[i] == i
		printf("%d\n", cnt);
	}

	return 0;
}

【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析 博文介绍了如何使用正向解析区,包括创建和添加并验证,以及术语 主机记录,别名,邮件交换记录的解释。 阅读详情

相关推荐

Cheat Engine实战:多级指针逆向破解游戏内存的5个关键步骤(附C++模拟代码)

本文详细解析了使用Cheat Engine进行多级指针逆向破解游戏内存的完整流程。通过5个关键步骤,从定位动态地址到逐层追踪指针链,最终构建稳定指针路径。文章结合C++模拟代码,深入剖析了指针链的底层汇编原理,并提供了高级排查技巧,帮助读者掌握逆向工程中的核心内存追踪技术。

weixin_29239279的博客 306

hdu 2844 Coins

hdu   2844   Coins               题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844 题目大意:有n种硬币,给出价值上限m,给出这n中硬币的价值和数量,求价值上限内的价值组合数。 题目分析:看起来像是个不设重量的多重背包,求组合数可以与母函数结合。 code: #include #include int m

slicer的技术交流栈 725

一图文带您认识磁编码器

磁编码器是以磁电原理技术生产的编码器。 磁编码器工作原理: 当电流通过一个位于磁场中的导体的时候,磁场会对导体中的电子产生一个垂直于电子运动方向上的的作用力,从而在垂直于导体与磁感线的方向上产生电势差。 如果让施加在这个导体上的磁场以电流流经路径为轴线,按照上图箭头所示的方向旋转,那么这个霍尔电势差就会因为磁场与导体之间角度的改变而发生变化,而这个电势差的变化趋势,与之前一文中次级线圈旋转时的输出电压一样,是一条正弦曲线。因此,基于这个通电导体两侧的电压,就可以反推计算出磁场旋转的角度了。 .

encoder_yang的博客 2万+

HDU 2844 Coins(多重背包)

HDU Coins(多重背包) http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意: 现在有价值val[1],val[2],…val[n]的n种硬币, 它们的数量分别为num[i]个. 然后给你一个m, 问你区间[1,m]内的所有数目, 由之前n种硬币来构造(即选取某些硬币使得这些硬币的价值和等于[1,m]区间的特定数), 最多能构造出这m个数中的多少个? 分析: 基本的完全背包问题. 我们令dp[i][j]==x表示

code 1321

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 271

RS485信号测量避坑指南:示波器抓包常见问题与波形分析技巧

本文详细解析了RS485信号测量中的常见问题与解决方案,包括差分信号测量基础、终端电阻配置、共模干扰处理等关键技巧。通过实测波形案例和优化建议,帮助工程师有效提升RS485通信的可靠性和抗干扰能力,适用于工业自动化、远程监测等场景。

kappa的博客 617

HDU 2844: Coins【01背包的二进制优化】

HDU 2844: Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar....

这是一个ACM专用的瞎写给自己看的没什么技术含量的可能是假的博客 253

GB28181协议心跳机制:从标准解读到代码实现的保活策略

本文深入解析GB28181协议中的心跳机制,从标准解读到代码实现,详细介绍了保活策略的核心价值和底层逻辑。通过实战案例和技术要点,帮助开发者优化心跳间隔、超时次数等参数配置,提升安防监控系统的可靠性和性能。文章还提供了代码实现的防坑指南和特殊场景处理建议,适用于各类网络环境下的设备在线状态管理。

weixin_29611239的博客 105

POJ 1742/HDU2844 Coins 题解

POJ 1742/HDU2844 Coins 题解

Jeza SS 526

生存分析机器学习问题

然而,随着人工智能 (AI) 和机器学习 (ML) 的兴起,科学家现在能够开发更复杂的模型,揭示这些数据集中的模式和特征,从而为癌症的生物学、诊断、预后、治疗和预后提供新的见解。病情更重的患者可能接受更强(或更弱)的治疗,导致治疗方案与不良预后(死亡)强相关。数据集中包含失访或研究结束时仍存活的患者(删失数据),他们的真实生存时间未知,仅知道其存活时间不低于观察到的最后一次随访时间。优先选择参数少、结构简单的模型(如带强正则化的线性模型、简单树模型),避免复杂模型(如深度神经网络)。时刻的状态是未知的。

4AM_明朝百晓生 1223

GD32F4 Freertos实战:YT8512以太网PHY驱动移植与RMII模式配置详解

本文详细讲解了在GD32F470微控制器上,基于FreeRTOS系统移植YT8512以太网PHY驱动的实战过程。文章重点剖析了RMII时钟模式的选择与配置、PHY地址的正确设置,并针对YT8512芯片的寄存器差异,提供了核心驱动代码的适配方法与调试技巧,帮助开发者顺利完成从官方例程到特定硬件的驱动移植。

weixin_29162439的博客 608

HDU2844 Coins 多重背包

HDU2844 Coins 多重背包 Coins Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12330Accepted Submission(s): 4922 Pr...

weixin_30666753的博客 105

ESP32S3接入讯飞在线语音识别教程及配套源代码

本文介绍了如何使用ESP32-S3开发板实现讯飞在线语音识别功能。首先,需要准备硬件设备,包括ESP32-S3开发板、麦克风模块、MicroSD卡模块和扬声器模块。接着,安装Arduino IDE并配置ESP32-S3开发环境,注册讯飞开放平台账号并获取API凭证。然后,通过I2S接口连接麦克风模块,并编写代码实现语音录制、Base64编码、API请求和识别结果处理。代码包括初始化WiFi、麦克风、系统时间,以及录制语音、发送请求、解析响应等功能。最后,通过按键触发录音,并将识别结果输出到串口。

2401_88800025的博客 746

hdu_2844_Coins(多重背包)

题目连接:hdu_2844_Coins 题意:给你n个硬币的价值和对应的数量,问你从1到m有那些数能组合出来 题解:如果我们将硬币的价值看成一个物品的容量和价值,那么对应1-m,如果dp[i]==i,那么这个数就能组合出来,所以这题就变成了一个多重背包,多重背包可以分为完全和01背包,也可以直接用01背包做,分两种情况的速度要快一些,只用01背包的速度要慢一些,不过还是可以AC的 #incl

bin_gege的博客 326

IEM模型,地表粗糙度模拟

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 2844 Coins(多重背包,装满可行性)

HDU 2844 Coins    (POJ1742也是这道,但是用多重背包超时)                                                       http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意:        现在有价值val[1],val[2],…val[n]的n种硬币, 它们的数量分别为

sgh666666的博客 588

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

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

HDU 2844 Coins (多重背包->类01背包优化)

HDU 2844 Coins (多重背包->类01背包优化) (TEST<31> 11.20) 解题思路 看着就是 多重背包问题 在这里 进行了 0/1背包的优化 用dp【价值】=所能达到的最大价值 来判定是否能够达到 这个 值 关于0/1背包优化 解析 (出自ACwing 基础算法视频第五章 第一节动态规划 ) 看 1023 数字之和能够组成 1023? 0-1023 枚举每...

MaxVen 236

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

HDU2844 Coins【多重背包】

Coins Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20670Accepted Submission(s): 8121 Problem Description Whuacmers use coins.They h...

逐梦者 292

hdu 2844 Coins 多重背包 二进制优化 算是否能组成的背包

hdu 2844 Coins #include #include #define size 100010 #define csize 110 int dp[size]; int c[csize]; int num[csize]; int v; int max(int a,int b) { return a>b?a:b; } void ZeroOnePack(int cost,int we

yan_____的专栏 524

HDU 2844 Coins 多重背包 (重量和价值相同)

Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hibix opened purse and found there were some coins. He decided to buy a very nice watch in a

深海沧澜的博客 480

HDU 2844 Coins(多重背包 + 二进制优化 + 01背包)

题目链接:HDU 2844 Coins(多重背包 + 二进制优化 + 01背包) 多重背包 + 二进制优化 + 01背包。 跟poj那个dividing差不多,只是最后要求的m内的种类和,不多说了。 g++ TLE,c++ AC。。。 #include #include #include using namespace std; const int MAX_N = 100 +

fobdddf的专栏 847

HDU2844 Coins

题目大意:HIBiX想买一个很nice的watch,他有一堆coins,HiBix估计这个表的价格不会超过m,所以就打算用硬币拼出在m价格以内的价格数以备付款.来一个"苹果式还债",哈哈...  现在HiBiX问这堆硬币可以堆出多少钱值(在m以内) 思路:用多重背包的装满思想,就是对于每一个V,都尽量的去装.如果装满的就是能够拼出的相应价格,但是有一点有点蒙.看代码最后处....

muxi@Achilles的专栏 1112

hdu 2844 Coins

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2844 题目的意思其实是求硬币的组合方案,使得硬币的价值总额不超过m 一个很典型多重背包问题 这个题目如果用0-1背包来做,是会超时的,所以用多重背包,其实差别很小,只不过不能用逆序的方法,要采取顺序,理由是并不清楚前一次可以取多少枚硬币 同时采用2进制的处理方法。 代码如下: #inclu

Visioner的自留地 554

HDU-2844:Coins(多重背包+二进制优化)

链接:HDU-2844:Coins 题意:给你n个种类的钱和对应的数量,同统计一下从1到m能够凑成的钱有多少个。 题解:C[i] = 1 + 2 + 4 + ··· + 2^k + a (0 <= a < 2^(k+1))。 #include <bits/stdc++.h> using namespace std; const double EPS = 1...

weixin_33796205的博客 110

HDU 2844 Coins 多重背包

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2844 Coins Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 Whuacmers use coins.They have coins of value A1,A2,A3.....

weixin_30809173的博客 117
上一篇: HDU 1171 Big Event in HDU
下一篇: HDU 1203 I NEED A OFFER!
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值