RQNOJ 95 多多看DVD(加强版):01背包
题目链接:https://www.rqnoj.cn/problem/95
题意:
叔叔要陪多多看动画片。
有n张DVD可以买,第i张碟的打分为w[i],播放时间为t[i]。
爷爷规定他们只能在一定的时间段L看完。
多多让叔叔惯的特别任性,只要他看到有几张就一定会看完。
买碟的地方只买给顾客m(m<n)张碟,不会多也不会少。
在N张碟中只买M张而且在规定时间看完,问你最高的总价值。
题解:
表示状态:
dp[i][j][k] = max value
i:考虑到第i个DVD
j:已经选了j张碟
k:当前的总播放时间
找出答案:
max dp[n][m][0 to L]
所有碟都考虑完,正好选了m张。
如何转移:
now: dp[i][j][k]
dp[i+1][j][k] = max dp[i][j][k] (不选)
dp[i+1][j+1][k+t[i]] = max dp[i][j][k] + w[i] (选)
边界条件:
dp[0][0][0] = 0
others = -1
AC Code:
1 // state expression: 2 // dp[i][j][k] = max value 3 // i: considering ith DVD 4 // j: j DVDs is selected 5 // k: cost time 6 // 7 // find the answer: 8 // max dp[n][m][0 to l] 9 // 10 // transferring: 11 // now: dp[i][j][k] 12 // dp[i+1][j][k] = max dp[i][j][k] 13 // dp[i+1][j+1][k+t[i]] = max dp[i][j][k] + w[i] 14 // 15 // boundary: 16 // dp[0][0][0] = 0 17 // others = -1 18 #include <iostream> 19 #include <stdio.h> 20 #include <string.h> 21 #define MAX_N 105 22 #define MAX_M 105 23 #define MAX_L 1005 24 25 using namespace std; 26 27 int n,m,l; 28 int ans; 29 int t[MAX_N]; 30 int w[MAX_N]; 31 int dp[MAX_N][MAX_M][MAX_L]; 32 33 void read() 34 { 35 cin>>n>>m>>l; 36 for(int i=0;i<n;i++) 37 { 38 cin>>t[i]>>w[i]; 39 } 40 } 41 42 void solve() 43 { 44 memset(dp,-1,sizeof(dp)); 45 dp[0][0][0]=0; 46 for(int i=0;i<n;i++) 47 { 48 for(int j=0;j<=m;j++) 49 { 50 for(int k=0;k<=l;k++) 51 { 52 if(dp[i][j][k]!=-1) 53 { 54 dp[i+1][j][k]=max(dp[i+1][j][k],dp[i][j][k]); 55 if(j+1<=m && k+t[i]<=l) 56 { 57 dp[i+1][j+1][k+t[i]]=max(dp[i+1][j+1][k+t[i]],dp[i][j][k]+w[i]); 58 } 59 } 60 } 61 } 62 } 63 ans=0; 64 for(int i=0;i<=l;i++) 65 { 66 ans=max(ans,dp[n][m][i]); 67 } 68 } 69 70 void print() 71 { 72 cout<<ans<<endl; 73 } 74 75 int main() 76 { 77 read(); 78 solve(); 79 print(); 80 }
转载于:https://www.cnblogs.com/Leohh/p/7461277.html
RQNOJ 95 多多看DVD(加强版):01背包相关推荐
- 【01背包】最大约数和(jzoj 2126)
最大约数和 题目大意: 选若干个正整数,和不小于S,使每个数的因数(不包括本身)之和最大 样例输入 11 样例输出 9 数据范围限制 对于30%的数据, S<=10: 对于100%的数据, S ...
- 01背包、完全背包、多重背包
参考(都有些错误):https://github.com/guanjunjian/Interview-Summary/blob/master/notes/algorithms/%E7%BB%8F%E5 ...
- hdu3339 In Action(Dijkstra+01背包)
1 /* 2 题意:有 n 个站点(编号1...n),每一个站点都有一个能量值,为了不让这些能量值连接起来,要用 3 坦克占领这个站点!已知站点的 之间的距离,每个坦克从0点出发到某一个站点,1 un ...
- 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...
度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...
- 背包——01背包Bone Collector(hdu2602)
首先说明一下01背包 有一个容量为V的背包,另外有N个物品,每个物品Ni都有其对应的体积Vi和价值Pi 求如何取舍装进背包中使得背包里的总价值P达到最大值 题目看似很像贪心问题,把我们不妨先以贪心的思 ...
- 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包
动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...
- 蚂蚁算法的应用(01背包、函数极值、TSP)
蚂蚁算法的应用(01背包.函数极值.TSP) 笔者是一位大一的萌新,这篇算法是自己查阅文献以及参考别人的博客再加上自身的理解写出来的.有错误的地方希望及时指正.这篇文章我使用的是Matlab,后续 ...
- 背包算法轻松搞定——01背包算法、部分背包算法
这篇文章过程讲得很详细,一文搞懂(点击看原文) 不懂之前觉得很难理解,觉得很复杂,其实没有必要.因为只要懂动态规划就可以很轻松搞定0-1背包算法(部分背包算法更简单,排序即可).之前看了很多篇文章都觉 ...
- 浅说——九讲背包之01背包
所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...
- Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元
题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...
最新文章
- Django生命周期与中间件
- php中隐藏和展开文章,手机端第一屏页面文章的展开和隐藏_html/css_WEB-ITnose
- 简易的bbs论坛开发过程上(后台开发)
- [剑指offer][JAVA]面试题第[46]题[把数字翻译成字符串][递归][逆推]
- 生成技术在人工智能平台中的应用探索
- 浙大1002Fire Net心得
- 自学前端开发:想要学习成为一名优秀的前端开发者,代码之外需要关注的问题
- 能取代top命令的htop
- 理解和使用NT驱动程序的执行上下文
- 数学与计算机科学奖王小云,2019 数学与计算机科学奖 获奖人 —— 王小云 - 未来科学大奖...
- 西安火车站迎来“大手术”
- 搜款网根据ID取商品详情 API
- Panabit存在命令执行漏洞
- PART 1:基于大数据人才岗位招聘情况对数据进行清洗、初步分析
- STM32用XCOM调试助手打印不出数据
- 2020牛客暑期多校训练营Decrement on the Tree(图论,set)
- cad相对坐标快捷键_cad角度快捷键(cad角度命令怎么输入)
- 医疗环境电子数据交换标准HL7 v3.0的新进展
- Web Service与Rest API
- L1-029 是不是太胖了 (5分)
热门文章
- Illustrator 教程,认识 Illustrator 中的工作区
- XnConvert for Mac(批量图像格式转换软件)
- macos删除快捷键的各种区别用法
- 如何查找识别苹果无线鼠标/无线键盘/触控板的设备序列号
- 阿里大数据运维新成员——24小时待命!有求必应!能说会做!...
- 看雪学院荣获TSRC 2018年度峰会优秀合作伙伴
- python:关于读取文件的指定行的问题
- 【排错】exchange2013不能显示所有OU
- Java经典设计模式 总览
- OVM-V1.2正式发布,新增实时监控功能,支持一键升级