hdu2079 选课时间(题目已修改,注意读题)(多重背包)
来源:互联网 发布:小学生机器人编程 编辑:程序博客网 时间:2024/06/05 10:47
本题刚开始一看求方案数,当场懵逼,现在求的背包都是最大容量,这题还能叫背包么?(我也不造)
一看小数据,二进制也不用优化(其实是不会这半背包类型)。然后判断其背包是否装满,装满就要分开初始化。这题看别人题解说是要判重,其实就是在遍历物品数量前加了个条件,如果超了背包容量就退出。还有值得注意的地方,最后遍历的才是背包数量,因为是通过遍历同一种物品数量来判断是否装满,而对于容量题目要求必须为满,所以不能为判断条件。
其实判断条件自己调个序试试就好,试试才知道hdu2191遍历对象为价值(求最大价值),所以最后一层循环为价值。总而言之,要求的遍历对象为什么,最后一层for就遍历什么。
#include <stdio.h>#include <math.h>#include <string.h>#include <algorithm>#include <cmath>using namespace std;const int N = 55;int sum;int dp[N];struct node{ int a, b;}cla[N];int main(){ // freopen("in.txt", "r", stdin); int t, n, k; scanf("%d", &t); while(t --) { memset(dp, 0, sizeof(dp)); scanf("%d%d", &n, &k); for(int i = 1; i <= k; i ++) { scanf("%d%d", &cla[i].a, &cla[i].b); } dp[0] = 1; for(int i = 1; i <= k; i ++) for(int j = n; j >= cla[i].a; j --)//容量 for(int l = 1; l <= cla[i].b; l ++)//数量 { if(j - cla[i].a * l >= 0) dp[j] += dp[j - cla[i].a * l]; else break; } printf("%d\n", dp[n]); } return 0;}
0 0
- hdu2079 选课时间(题目已修改,注意读题)(多重背包)
- hdu2079-选课时间(题目已修改,注意读题)
- hdu2079选课时间(题目已修改,注意读题)
- hdu2079选课时间(题目已修改,注意读题)
- 【01背包/母函数】HDU2079选课时间(题目已修改,注意读题)【用背包求解方案数】
- HDU2079 选课时间(题目已修改,注意读题)【母函数】
- 多重背包hdu 2079选课时间(题目已修改,注意读题)
- hdu 2079 选课时间(题目已修改,注意读题) 多重背包
- HDU--杭电--2079--选课时间(题目已修改,注意读题)--背包
- hdu2079选课时间(背包)
- hdu 2079 选课时间(题目已修改,注意读题)
- 选课时间(题目已修改,注意读题) + 母函数
- 选课时间(题目已修改,注意读题)
- 2079 选课时间(题目已修改,注意读题)
- HDU 2079 选课时间(题目已修改,注意读题)
- hdu 2079 选课时间(题目已修改,注意读题)
- HUD 选课时间(题目已修改,注意读题)
- hdu 2079 选课时间(题目已修改,注意读题)
- 笔记 - Java 反射
- python类中的__call__、__init__、__getattr__、__setattr__、__setattr__详解
- 读《从〈机器猫〉看阶级斗争残酷的本质》
- 关于大型网站技术演进的思考(七)--存储的瓶颈(7)
- Android App整体架构设计的思考
- hdu2079 选课时间(题目已修改,注意读题)(多重背包)
- Sqlite中文乱码问题
- 存储过程的优点和缺点
- Spring 框架的 UI(IOC) 功能
- Android UI杂谈---layout_weight
- 完成命令解析程序
- 关于大型网站技术演进的思考(六)--存储的瓶颈(6)
- phpExcel常用方法
- <string.h>