HDU2844 Coins

杭电的acm的猜数字题目 刚做的这个题目,感觉还不错,想求个猜数字的题目,1175的 立即下载

题目大意:HIBiX想买一个很nice的watch,他有一堆coins,HiBix估计这个表的价格不会超过m,所以就打算用硬币拼出在m价格以内的价格数以备付款.来一个"苹果式还债",哈哈...  现在HiBiX问这堆硬币可以堆出多少钱值(在m以内)

思路:用多重背包的装满思想,就是对于每一个V,都尽量的去装.如果装满的就是能够拼出的相应价格,但是有一点有点蒙.看代码最后处....

 

 

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define inf -100000000
int n,m; 
int dp[100005];
int a[100005],c[1005];
int v;
void ZeroOnePack(int cost,int weight)
{
  for(int i=v;i>=cost;i--)
     if(dp[i]<dp[i-cost]+weight)
         dp[i]=dp[i-cost]+weight;  
            
      
}
void CompletePack(int cost,int weight)
{
  for(int i=cost;i<=v;i++)
     if(dp[i]<dp[i-cost]+weight)
         dp[i]=dp[i-cost]+weight;     
}
void MultiplePack(int cost,int weight,int amount)
{
      if(cost*amount>=v)
           CompletePack(cost,weight);
       else
       {
           for(int k=1;k<amount;)
           {
             ZeroOnePack(k*cost,k*weight);
             amount-=k;
             k<<=1;        
           }    
           ZeroOnePack(amount*cost,amount*weight);
       }     
}
int main()
{
   while(scanf("%d%d",&n,&m)!=EOF,n||m)
   {
      for(int i=0;i<n;i++)      
         scanf("%d",&a[i]);    //硬币面值                         
      for(int i=0;i<n;i++)
         scanf("%d",&c[i]);    //硬币数量 
      v=m;
      
      for(int i=1;i<100005;i++)
          dp[i]=inf;      
      dp[0]=0;
      for(int i=0;i<n;i++)
          MultiplePack(a[i],a[i],c[i]);
      int sum=0;
      for(int i=1;i<=m;i++)
         if(dp[i]==i)//这里还不是很明白为什么这个改为>0也可以AC.囧.. 
            sum++;
      printf("%d\n",sum);
   } 
}


 

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。 Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。 阅读详情

相关推荐

CPU设计实战:Loongarch版 lab6--20条指令单周期CPU

这个debug卡我时间最长的就是通用寄存器的写使能信号,当时一直没找到,甚至把golden—trace生成了一遍又一遍,对照test,检查了各种,卡了很长时间,我都以为是我之前哪一步搞错了,或者环境什么的,但是一步步做下来并没有,并且“机器永远是对的”让我终于查到了错。debug到一半才想起来写个博客,就不写过程了,下个lab再写过程。下面是两个模块的代码,运行已通过仿真验证。其他的bug就还好,如果认真跟着。就能马上找出来,,上面的每一句话都很重要。走,按逻辑检查并且查。

m0_65369544的博客 6303

HDU2844(多重背包)

题目大意:给你n个种类的钱和对应的数量,同统计一下从1到m能够凑成的钱有多少个;解题思路:多重背包的题,少了一个类似于重量上限的限制,这里其实就是那个m,每次不断变化的1到m的值就是限制,最后统计下多少dp数组更新过就是能够凑到的,这里不用从1到m枚举上限,直接上限填m,这样在更新完n个种类后m之前由于要到达m必然解决比他小的包,简言之,就是前面的dp已经优化了(你想我们既然都优化到m了,像m-1...

小胡同的诗 597

自偏置电流镜设计实例

自偏置电流镜设计实例 一、概述 ​ 众所周知,电流镜属于模拟电路设计中的一个基本模块,可为其他模块提供偏置电流,例如在放大器中提供偏置电流以形成尾电流源并确定直流偏置点。本文将会介绍一种自偏置的电流镜,从原理出发,并以0.18um的工艺进行设计和仿真。 二、原理 ​ 如图一所示的电路,也称之为Beta-multiply reference电路,其中M2的尺寸是M1的k倍。M3复制M4的电流,M2和M1的漏极电流相同,但是VGS并不相等。其中 VGS=2IμnCoxW/...

aonuanjiang的博客 1万+

【HDU2844】二进制优化多重背包

1.题目链接。首先这个题的意思就是:n种硬币,每种硬币有面值和数量,给你m,让你求从1到m这m个数据,有多少个可以用这些硬币凑出来。 2.我们分析一下这个问题,似乎是一个背包问题,但是这个是让我们求方案数,而不是最大能够装多少之类的。我们还是按照我们之前的DP方程,在最朴素的多重背包问题种,DP[k]代表容量为k的时候我们最多可以装多少东西,和这个问题好像没啥关系。那么现在就有两个解决方案:把这...

YG爱木木 496

大数据课程综合实验案例:网站用户行为分析

大数据课程综合实验案例1 案例简介1.1 案例目的1.2 适用对象1.3 时间安排1.4 预备知识1.5 硬件要求1.6 软件工具1.7 数据集1.8 案例任务1.9 实验步骤2 本地数据上传到数据仓库Hive2.1 实验数据集的下载2.2 数据集的预处理(1)删除文件第一行记录,即字段名称(2)对字段进行预处理(3)导入数据库3 Hive数据分析3.1 操作Hive3.2 简单查询分析3.3 查询条数统计分析3.4 关键字条件查询分析3.4.1 以关键字的存在区间为条件的查询3.4.2 关键字赋予给定值为

weixin_44616879的博客 1万+

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

hdu2844 完全背包+多重背包(经典)

题意:给你一些不同价值和一定数量的硬币,求用这些硬币可以组合成价值在[1 , m]之间的有多少; 思路:由于考虑时间,所以需要用二进制优化;#include<stdio.h> #include<string.h> #define max(x,y) (x>y?x:y) int a[101],b[101],dp[100001]; int main() { int n,m; while(

hndu__lz的博客 525

华为OD机试 - 物流仓储多维度成本利润综合查询系统 - 二维数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。某物流企业在全国多个仓库开展仓储业务,需要对不同仓库、不同时段的入库成本、出库收入和库存损耗进行综合统计分析,用于生成 日报、周报和月报。字段说明及取值范围如下:warehouses: int[] 扁平化数组 [w0d0in, w0d0out,

学Java,找哪吒 309

HDU 2844 (多重背包)

多重背包(二进制优化)模板题意: 有n个硬币,每一个硬币有自己的数值Vi,其个数为Ci。不同硬币的不同组合能买到不同物品,问在1~V的区间内最多能买到多少不同种类的物品。 思路: 其实题意也就是求硬币在[1,V][1 , V ] 区间能组合成多少不同数字。那么问题来了,怎么求出? 直接暴力求那是绝对不能做的,现在的比赛怎么存在这么简单的问题。 可以把它转化为背包问题,dp

Since_natural_ran 454

基于知识图谱的农作物病虫害问答系统设计与实现

基于规则的问题分类是自问答系统诞生以来就一直存在的方式,主要代表就是众多的专家系统,构建专家系统采用的是规则分类器,优点是能够对特定领域、特征明显的问题进行高效精准问答,但是。,在问答系统中,问题以语音及文本字符等自然语言形式输入,利用问答系统的内部的逻辑处理模块,通过自然语言处理技术获得输入问句的详细语义信息,再经过知识检索、置信分析等步骤,自然语言处理中,用于文本分类任务的机器学习方式有两种,一种用传统的机器学习,如 NBC、SVM 等,另一种采用深度学习,如 CNN 和 RNN 等。

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2166

微信小程序 - 最新详细实现气泡菜单功能,点击任意元素在底部或附近周围弹出气泡菜单列表,仿微信气泡弹框显示菜单快捷功能收纳,自定义气泡弹窗/菜单气泡弹窗,小程序气泡框嵌套菜单组件插件,自动计算弹出定位

微信小程序,vue2,vue3,气泡列表,汽泡菜单,气泡框,泡泡框,悬浮框,悬浮菜单,点击菜单按钮弹出气泡,对话箭头气泡框,弹出的气泡准确定位并吸附在附近,弹出式气泡,弹窗菜单,气泡自定义HTML弹窗,带三角的气泡弹框,三角气泡框里面嵌套菜单,当点击一个按钮或元素时,会从附近弹出一个小气泡一样的菜单列表,自定义气泡框内的内容,点击一个元素在附近弹出一个气泡弹框功能效果,气泡弹框不准怎么办,被盖住了,挡住了,长按弹出,组件插件,微信,自定义气泡菜单组件,气泡弹出框,小程序自定义气泡框,菜单气泡,包裹列表的三角

🏆 前端领域优质创作者 3917

HDU 2844:Coins(多重背包)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2844有 N 种物品和一个容量为 V 的背包。第 i 种物品最多有 ci 件可用,每件耗费的 空间是 wi,价值是 vi。求解将哪些物品装入背包可使这些物品的耗费的空间总和不超 过背包容量,且价值总和最大。这样的是多重背包。多重背包有的暴力就是在01背包的基础上多一重循环:for(k=1;k<=c[i];k+

I don't have the strength. 310

手把手教你学pcie--用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

MHD0815的博客 340

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

Statistics and Machine Learning Toolbox

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

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

hdu_2844_Coins(多重背包)

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

bin_gege的博客 326

POJ 1742/HDU2844 Coins 题解

POJ 1742/HDU2844 Coins 题解

Jeza SS 526

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

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

MaxVen 236

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

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(多重背包 + 二进制优化 + 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

HDU 2844 Coins

多重背包。 每个物品分别dp。。 dp[i][j]表示考虑了前i个物品。。装满j的背包。。第i个物品最少拿多少个 这样就可以了 转移大概是。。。dp[i][j] = std::min(dp[i][j - a[i]] + 1, 0 if dp[i - 1][j] a[i]是第i个物品的大小 c[i]是数量 Coins Time Limit: 2000/1

long long ago 1410

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 1059 Dividing
下一篇: hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
muximuxi525
博客等级 码龄15年 134粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值