题意:(直接看输入)

735 3 4 125 6 5 3 350

633 4 500 30 6 100 1 5 0 1

735 0

0 3 10 100 10 50 10 10

每行第一个数为需要凑出的货币,为total

第二个数为有几种货币,为n

接下来分别是该货币的数量,和该货币的面值,num[i] 与 v[i]

分析:

典型多重背包问题,新建一个数组  lim[1e5+10],lim[i] 表示当所凑出的货币为 i 时,所需要第k类货币几份,每次循环时初始化lim数组,代码很简单,建议通过代码进行理解.

代码:

#include <cstdio>
#include <cstring>
#define rep(i,a,b) for(int i = a;i <= b;i++)
#define pre(i,a,b) for(int i = a;i >= b;i--)
using namespace std;
const int SIZE = 1e5+10;int n,dp[SIZE],total;  //total是想要凑出的目标值  n是有几种货币
int num[15],v[15],lim[SIZE];  //num是数量  v是货币面值
//lim[i]是当凑出的货币值为 i 时,所需要的第 k 类货币个数 int main()
{while(~scanf("%d%d",&total,&n)){memset(dp,0,sizeof dp);rep(i,1,n)scanf("%d%d",&num[i],&v[i]);rep(i,1,n){memset(lim,0,sizeof lim);  //对lim初始化 rep(j,v[i],total)if(dp[j] < dp[j-v[i]]+v[i] && lim[j-v[i]] < num[i])  //lim[j]表示凑出面值为 j 的货币所需的 j 类货币的种数 {dp[j] = dp[j-v[i]] + v[i];lim[j] = lim[j-v[i]]+1; }   }printf("%d\n",dp[total]);}return 0;
}

【POJ1276】【多重背包】凑货币问题相关推荐

  1. POJ1276 多重背包DP 生命不息优化不止

    POJ1276 多重背包DP题 这道题弄了一个早上-一看题目是多重背包题直接敲了一个三重for循环,无限TLE,下面附上好几种解法. Description A Bank plans to insta ...

  2. 完全背包、多重背包练习总结

    完全背包练习总结 这两天又整了哈完全背包问题,跟01背包确实有很多相似的地方,但还是要花点时间研究熟练才得行,要不然比赛的时候遇到浪费时间精力 第一题 poj1384 这道题恩是不走寻常路,一般背包嘛 ...

  3. hdu 3591 多重背包+完全背包练习题

    1 题目 http://acm.hdu.edu.cn/showproblem.php?pid=3591 题意:货币系统有 N 种不同面值的钱,每种钱的价值分别为 V1,V2,...,VN 一个人要买价 ...

  4. POJ 3260 多重背包+完全背包

    前几天刚回到家却发现家里没网线 && 路由器都被带走了,无奈之下只好铤而走险尝试蹭隔壁家的WiFi,不试不知道,一试吓一跳,用个手机软件简简单单就连上了,然后在浏览器输入192.168 ...

  5. 九十、动态规划系列背包问题之多重背包

    @Author:Runsen 曾几何时,才记得自己还是大一军训的菜鸟,带着 迷茫和憧憬踏入大学,踏入化工学院,却踏入这个行业,殊不知岁月是最高明的小偷,偷走时间,带走青春,一点线索也不留.大学的玩命学 ...

  6. 动态规划-----------01背包,完全背包与多重背包

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  7. POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )

    题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法. 如果之前有接触过背包DP的可以自然想到 ...

  8. 洛谷P2851 [USACO06DEC]最少的硬币The Fewest Coins(完全背包+多重背包)

    题目描述 Farmer John has gone to town to buy some farm supplies. Being a very efficient man, he always p ...

  9. (多重背包+记录路径)Charlie's Change (poj 1787)

    http://poj.org/problem?id=1787   描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...

  10. 最少硬币找零系列问题(01背包,完全背包,多重背包动态规划)

    背包问题思路解决最小硬币找零系列问题. 一.01硬币找零问题(01背包) 给定不同面额的硬币 coins 和总金额 m.每个硬币最多选择一次.计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬 ...

最新文章

  1. 2018区块链生存指南:要做飞行的猪、摔不坏的弹球、未来的种子
  2. HTML提交弹出提交中,javascript – 从弹出窗口在父窗口中提交表单?
  3. Android Studio 如何打JAR包
  4. CentOS7部署Flask+Gunicorn+Nginx+Supervisor
  5. Thread.CurrentPrincipal HttpContext.Current.User
  6. python命令行运行模式_[Python] 命令行模式阅读博客园的博文
  7. python编写简单赌博游戏赏析及注意事项
  8. 【Siddhi】Siddhi 5 自定义函数简单使用
  9. php多维数组key交换,php 根据key计算多维数组的和功能实例
  10. 异常——Python
  11. prometheus使用cAdvisor监控容器
  12. md5加密算法c语言版
  13. python中match用法_Python3.9.1中使用match方法详解
  14. win10系统如何telnet服务器,win10专业版官网系统如何开启telnet服务的办法
  15. p17.matplotlib:图中图
  16. Android实现隐藏手机底部虚拟按键
  17. 技术团队人员管理:组建团队的方式
  18. 基于 RTS 超低延时直播优化强互动场景体验
  19. 数说热点 | 跟着《长月烬明》起飞,今年各地文旅主打的就是一个听劝
  20. 4294967295,

热门文章

  1. 如何利用ping命令拥有最佳MTU?
  2. Java之POI操作,封装ExcelUtil实现Excel导入导出
  3. poi向word插入图片_【工作应用】Java根据word模板动态生成word文档(SpringBoot项目)...
  4. 进程间通信-命名管道FIFO
  5. linux汇编预处理,Linux程序在预处理、编译、汇编、链接、运行步骤的作用
  6. 电脑键盘下划线怎么打_苹果电脑键盘失灵怎么办,维护方法!
  7. 【CF703-Div2-C1/2】C2. Guessing the Greatest(交互题-思维+二分)
  8. 猜数字游戏c语言编程排行榜,C语言程序经典示例—-(7)猜数字游戏
  9. 厄拉多塞筛法求素数 c语言,求质数(Prime Number 素数)的方法——厄拉多塞筛法...
  10. java 文件存在 却找不到文件_当文件确实存在时,ProcessBuilder给出“找不到文件”异常...