5410 ACM 杭电 01+完全背包
题目: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+完全背包相关推荐
- 杭电1963 完全背包
完全背包,但是总容量不稳定,随着每年的盈利,背包容量在变大,而且,题目给的数据比较大,但是给的有投资的都是1000 的倍数,运用的时候除以1000即可,附代码: Time Limit : 5000/1 ...
- 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂
文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...
- 【杭电ACM】1097 A hard puzzle
[杭电ACM]1097 A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...
- 杭电ACM刷题(1):1002,A + B Problem II
最近忙于考试复习,没有多少可供自己安排的时间,所以我利用复习之余的空闲时间去刷刷杭电acm的题目,也当对自己编程能力的锻炼吧. Problem Description I have a very si ...
- 杭电1284钱币兑换问题—背包dp/母函数(java)
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...
- 杭电acm2151题java的解法,杭电ACM题型分类
杭电ACM题型分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1 ...
- 杭电acm a+b问题
杭电acm 1000 a+b问题代码 int main() { int a,b; for(;~scanf("%d%d",&a,&b);printf("%d ...
- 杭电 HDU ACM 圆桌会议
圆桌会议 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 杭电ACM 1174
//身高,又称身长,是指一个人从头顶到脚底的身体长度. //杭电ACM 1174 爆头 #include<iostream> #include<cmath> using nam ...
最新文章
- 放大 旋转 css3,CSS3详解:transform 的旋转、旋转放大、放大、移动
- 干货 | 为你解读34篇ACL论文
- Android Lifecycle组件使用
- Erlang中使用变量的简单示例
- Java二十三种设计模式 之代理(proxy)
- ubuntu10.04添加账户示例
- 6年软件测试,职场上的摸爬滚打,告诉我这些.......
- 刷新率调高,或高于60Hz闪屏,忽明忽暗,晃动问题
- 吴恩达神经网络和深度学习-学习笔记-3-参数随机初始化
- 输出结果为16的python表达式_第一周作业(rayco)
- 如何在 macOS Monterey 中管理应用程序和联系人的 Mac 通知?
- 乘法逆元---费马小定理扩展欧几里得
- 黑马微服务项目乐优商城全套
- js实现简单的图片上传
- aspose-cad dwg转pdf dwg转png dwg转svg
- Pygame小游戏之俄罗斯方块凭什么火了30年?(史上最畅销单机游戏)
- 对于女生来说,软件测试和前端,学哪一个更好啊
- 有点恐怖,这个工具能让你在 20 秒内,克隆你的声音,并转成英语!
- java实现远程控制
- 判断图片色彩模式 CYMK || RGB