题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1233

题目就不说明了。

背包的二进制优化,比如10可以表示为1 2 4 3,而这些数能表示1 ~ 10的任意的数。然后类似01背包就好了。

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <cstdio>
 6 #include <vector>
 7 #include <ctime>
 8 #include <queue>
 9 #include <list>
10 #include <set>
11 #include <map>
12 using namespace std;
13 #define INF 0x3f3f3f3f
14 typedef long long LL;
15 const int N = 1e5 + 5;
16 int dp[N];
17 int val[105], c[105];
18
19 int main()
20 {
21     int t, n, m;
22     scanf("%d", &t);
23     for(int ca = 1; ca <= t; ++ca) {
24         scanf("%d %d", &n, &m);
25         for(int i = 1; i <= n; ++i) {
26             scanf("%d", val + i);
27         }
28         for(int i = 1; i <= n; ++i) {
29             scanf("%d", c + i);
30         }
31         memset(dp, 0, sizeof(dp));
32         dp[0] = 1;
33         for(int i = 1; i <= n; ++i) {
34             for(int k = 1; k <= c[i]; k <<= 1) {
35                 for(int j = m; j >= k*val[i]; --j) {
36                     dp[j] |= dp[j - k*val[i]];
37                 }
38                 c[i] -= k;
39             }
40             if(c[i]) {
41                 for(int j = m; j >= c[i]*val[i]; --j) {
42                     dp[j] |= dp[j - c[i]*val[i]];
43                 }
44             }
45         }
46         int ans = 0;
47         for(int i = 1; i <= m; ++i) {
48             ans += dp[i];
49         }
50         printf("Case %d: %d\n", ca, ans);
51     }
52     return 0;
53 }

转载于:https://www.cnblogs.com/Recoder/p/5965081.html

Light oj 1233 - Coin Change (III) (背包优化)相关推荐

  1. Light OJ Dynamic Programming

    免费做一样新 1004 - Monkey Banana Problem 号码塔 1005 - Rooks 排列 1013 - Love Calculator LCS变形 dp[i][j][k]对于第一 ...

  2. Lightoj 1231 - Coin Change (I) (裸裸的多重背包)

    题目链接: Lightoj  1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...

  3. C++coin change 硬币找零(附完整源码)

    coin change 硬币找零 coin change 硬币找零算法的完整源码(定义,实现,main函数测试) coin change 硬币找零算法的完整源码(定义,实现,main函数测试) #in ...

  4. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问 ...

  5. 利用动态规划(DP)解决 Coin Change 问题

    问题来源 这是Hackerrank上的一个比较有意思的问题,详见下面的链接: https://www.hackerrank.com/challenges/ctci-coin-change 问题简述 给 ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. hdu2069(Coin Change)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Coin Change Time Limit: 1000/1000 MS (Java/Other ...

  8. LeetCode 518 Coin Change 2 (python)

    目录 LeetCode 518 Coin Change 2 (python) Code 欢迎一起来参与leetcode刷题项目 LeetCode 518 Coin Change 2 (python) ...

  9. Coin Change【硬币找零】

    一.题目 英文:Coin Change 中文:硬币找零 二.内容要求 英文:You are given coins of different denominations and a total amo ...

  10. uva 674 Coin Change 换钱币【完全背包】

    题目链接:https://vjudge.net/contest/59424#problem/A 题目大意: 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值 ...

最新文章

  1. 【OpenCV 4开发详解】分割图像——分水岭法
  2. 【业务】现金贷获客之道业务流程分析
  3. STL 之remove,remove_if,remove_copy,remove_copy_if
  4. CENTOS 内存释放
  5. java设计模式之单例模式(七种方法)
  6. 体验 CodeSmith
  7. python算法应用(三)——分级聚类
  8. 数据分析来诠释,为了“鸡”出“牛蛙”,中国家长到底能有多拼!
  9. 怎么设置服务器上的文件夹密码,文件服务器怎么设置文件夹密码
  10. 华为鸿蒙乌鸦快爷,华为鸿蒙第一批名单
  11. 有向无环图描述表达式
  12. vivo面试经验4(linux基本操作,最基本,必须得会!!)
  13. 「代码随想录」 377. 组合总和 Ⅳ 【动态规划】力扣详解!
  14. 《C语言程序设计:问题与求解方法》——2.15节算术表达式
  15. 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
  16. 2022软件测试技能 Jmeter+Ant+Jenkins持续集成并生成测试报告教程
  17. python实现二十四点
  18. 一文读懂多帧超分辨率来龙去脉2019
  19. 地图对接汇总(百度地图)
  20. Arcgis填补栅格空缺值Nodata

热门文章

  1. Linux突然断电后文件丢失的问题
  2. hdu 4828 Grids(拓展欧几里得+卡特兰数)
  3. Redis windows端连接虚拟机内Redis各种问题
  4. Java17,有史以来最快 JDK!
  5. Redis 面试 8 连问,你能顶住几道?
  6. SpringBoot2.x炫酷吊炸天前后端分离的后台管理系统实例
  7. 都不写代码,架构师整天在干啥?
  8. HTTP中GET与POST的区别,99 %的人都理解错了
  9. 苹果手机壳_潮牌刺绣苹果8 Plus手机壳,让爱机焕然一新
  10. Git版本控制及远程仓库的使用