题目:http://acm.hdu.edu.cn/showproblem.php?pid=5410
虽然是英文题目:但还是很好理解的。明显的背包问题
思路:如果你能想到把题目拆分成小问题,就会简单许多:
既然题目中的价值是:这种形式Ai × x + Bi,可以看成两部分Ai + Bi和Ai × (x-1 )的和,对前面的Ai + Bi,就是01背包问题,只有两种可能选和不选。后面的Ai × (x-1 )就是完全背包问题,每个物品可以多次被选择。
使用的先后顺序?
都可以
因为不管什么顺序,都有存储两个值以供选择。实在不能理解,可以举个例子
1
2 1
1 1 2
先完全后01
经过第一个for循环后
dp[1]=1;
dp[2]=2;
经过第二个for循环后
dp2]=1+1+2=4;
反之:
经过第一个for循环后
dp[2]=3;
dp[1]=3
经过第二个for循环后
dp[1]=4;
dp[2]=4;

#include<stdio.h>
#include<string.h>#define max(a,b) a>b?a:blong long dp[5000000];
int main()
{int T;scanf("%d", &T);while(T--){int M, N;int w, a, b;scanf("%d%d", &M, &N);memset(dp, 0, sizeof(dp));for(int i = 1; i <= N; i++){scanf("%d%d%d", &w, &a, &b);for(int j = w; j <= M; j++) dp[j] = max(dp[j], dp[j-w]+a);for(int j = M; j >= w; j--) dp[j] = max(dp[j], dp[j-w]+a+b);}printf("%I64d\n", dp[M]);}
}

转载于:https://www.cnblogs.com/CheeseIce/p/9588682.html

5410 ACM 杭电 01+完全背包相关推荐

  1. 杭电1963 完全背包

    完全背包,但是总容量不稳定,随着每年的盈利,背包容量在变大,而且,题目给的数据比较大,但是给的有投资的都是1000 的倍数,运用的时候除以1000即可,附代码: Time Limit : 5000/1 ...

  2. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  3. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

  4. 杭电ACM刷题(1):1002,A + B Problem II

    最近忙于考试复习,没有多少可供自己安排的时间,所以我利用复习之余的空闲时间去刷刷杭电acm的题目,也当对自己编程能力的锻炼吧. Problem Description I have a very si ...

  5. 杭电1284钱币兑换问题—背包dp/母函数(java)

    Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...

  6. 杭电acm2151题java的解法,杭电ACM题型分类

    杭电ACM题型分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1 ...

  7. 杭电acm a+b问题

    杭电acm 1000 a+b问题代码 int main() { int a,b; for(;~scanf("%d%d",&a,&b);printf("%d ...

  8. 杭电 HDU ACM 圆桌会议

    圆桌会议 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. 杭电ACM 1174

    //身高,又称身长,是指一个人从头顶到脚底的身体长度. //杭电ACM 1174 爆头 #include<iostream> #include<cmath> using nam ...

最新文章

  1. 放大 旋转 css3,CSS3详解:transform 的旋转、旋转放大、放大、移动
  2. 干货 | 为你解读34篇ACL论文
  3. Android Lifecycle组件使用
  4. Erlang中使用变量的简单示例
  5. Java二十三种设计模式 之代理(proxy)
  6. ubuntu10.04添加账户示例
  7. 6年软件测试,职场上的摸爬滚打,告诉我这些.......
  8. 刷新率调高,或高于60Hz闪屏,忽明忽暗,晃动问题
  9. 吴恩达神经网络和深度学习-学习笔记-3-参数随机初始化
  10. 输出结果为16的python表达式_第一周作业(rayco)
  11. 如何在 macOS Monterey 中管理应用程序和联系人的 Mac 通知?
  12. 乘法逆元---费马小定理扩展欧几里得
  13. 黑马微服务项目乐优商城全套
  14. js实现简单的图片上传
  15. aspose-cad dwg转pdf dwg转png dwg转svg
  16. Pygame小游戏之俄罗斯方块凭什么火了30年?(史上最畅销单机游戏)
  17. 对于女生来说,软件测试和前端,学哪一个更好啊
  18. 有点恐怖,这个工具能让你在 20 秒内,克隆你的声音,并转成英语!
  19. java实现远程控制
  20. 判断图片色彩模式 CYMK || RGB

热门文章

  1. 《Word2vec》1 模型的引入介绍与相关概念
  2. js取小数点后两位 方法总结
  3. 计算机英语缩略词大全,计算机英语缩略语大全
  4. 谷歌手机正式发布 售价179美元(图)
  5. 信息数据采集软件-什么工具可以快速收集信息
  6. ajax 执行成功前,提示正在处理请稍后
  7. word2vec中计算两个词的距离或者相似程度。
  8. lua遍历目录下所有文件
  9. STM32用ST-link下载程序
  10. 同花顺股票交易接口定义被类实现