Maximum Tape Utilization Ratio
题目
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是li ,1 < = i < = n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。在保证存储最多程序的前提下还要求磁带的利用率达到最大。 对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数和占用磁带的长度。
输入
第一行是2 个正整数,分别表示文件个数n <=600和磁带的长度L<=6000。
接下来的1 行中,有n个正整数,表示程序存放在磁带上的长度。
输出
第1 行输出最多可以存储的程序数和占用磁带的长度;
第2行输出存放在磁带上的每个程序的长度。
样例输入
9 50
2 3 13 8 80 20 21 22 23
样例输出
5 49
2 3 13 8 23
思路
我们开一个结构体存三个信息:可存程序个数,磁带占用长度,所有的程序
- dp[j].count 表示磁带长度为j最多可以存的程序的个数
- dp[j].sumv 表示磁带长度为j最多可以占用的磁带长度
- dp[j].pre 表示存了count个程序的每个程序占用的磁带长度
首先我们要满足储存的程序数最多那么如果满足:dp[j].count < dp[j - s].count + 1,可更新数据。
当储存程序相同的时候,我们需要满足:dp[j].sumv <= (dp[j - s].sumv + s),即程序数目相同的情况下,需要最大的磁带占用率,如果满足更新数据。
代码
#include<bits/stdc++.h>using namespace std;struct node
{ int count;//程序数目 int sum;//程序所占的长度 vector<int>pre;//count个程序 node() { count=0; sum=0; pre.clear(); }
}dp[6005];
int main()
{ int n,m,l[605]; cin>>n>>m; for(int i=0;i<n;i++) cin>>l[i]; //要倒叙,因为是用的栈 for(int i=n-1;i>=0;i--) { int k=l[i]; for(int j=m;j>=0;j--) { if(j-k>=0) { if(dp[j].count<dp[j-k].count+1||dp[j].count==dp[j-k].count+1&&dp[j].sum<=dp[j-k].sum+k) { dp[j].count=dp[j-k].count+1; dp[j].sum=dp[j-k].sum+k; dp[j].pre=dp[j-k].pre; dp[j].pre.push_back(k); } } } } cout<<dp[m].count<<' '<<dp[m].sum<<endl; for(int i=dp[m].pre.size()-1;i>0;i--) { cout<<dp[m].pre[i]<<' ';}cout<<dp[m].pre[0]<<endl;
}
Maximum Tape Utilization Ratio相关推荐
- swust594 Maximum Tape Utilization Ratio
Maximum Tape Utilization Ratio 1000(ms) 65535(kb) 819 / 2662 Tags: 贪婪策略 设有n 个程序{1,2,-, n }要存放在长度为 ...
- Swustoj(594)Maximum Tape Utilization Ratio(最容易懂的题解)
Maximum Tape Utilization Ratio 1000(ms) 65535(kb) 917 / 3074 Tags: 贪婪策略 设有n 个程序{1,2,-, n }要存放在长度为 ...
- SWUST OJ 之 0594 Maximum Tape Utilization Ratio
题目 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是li ,1 < = i < = n. 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, ...
- SWUST OJ 594: Maximum Tape Utilization Ratio
题目描述 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是li ,1 < = i < = n. 程序存储问题要求确定这n 个程序在磁带上的一个存储方 ...
- ACM-Maximum Tape Utilization Ratio
题目描述:Maximum Tape Utilization Ratio Tags: 贪婪策略 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是li ,1 < ...
- 【动态规划】磁带问题
Maximum Tape Utilization Ratio 1000(ms) 65535(kb) 956 / 3237 Tags: 贪婪策略 设有n 个程序{1,2,-, n }要存放在长度为L的磁 ...
- 控制网络技术(英文二)
控制网络技术(英文二)Data communication base 一.Theoretical basis 1.basis (1)Fourier Analysis (2)Bandwidth-Limi ...
- Dalvik虚拟机垃圾收集(GC)过程分析
前面我们分析了Dalvik虚拟机堆的创建过程,以及Java对象在堆上的分配过程.这些知识都是理解Dalvik虚拟机垃圾收集过程的基础.垃圾收集是一个复杂的过程,它要将那些不再被引用的对象进行回收.一方 ...
- 【MEC笔记-概述 】MEC
参考出处:https://blog.csdn.net/weixin_43502661/article/details/89228324 论文名:A Survey on Mobile Edge Comp ...
最新文章
- @OneToMany
- linux下软件安装与yum源码库的设置
- 8,协议序列化组件NewLife.Serialization
- 【数字智能三篇】之一: 一页纸说清楚“什么是大数据”
- 全球及中国汽车空调冷凝器行业发展前景规模及投资战略决策报告2022-2027年
- 20211124 自动化学科领域高质量技期刊分级目录(控制理论与控制工程)
- MySQL高级 - 锁 - MyISAM表锁 - 小结
- 【Hadoop Summit Tokyo 2016】Spark上可扩展的深度学习
- 全国计算机等级考试题库二级C操作题100套(第19套)
- 前端:常用的meta标签总结
- 【转】Linux C动态内存泄漏追踪方法
- 图像处理基础(二)_OpenCV命名规则
- 2017.11.21 MS Power BI training
- 杨校老师课堂之Hadoop环境搭建(一)
- Neo4j下载安装教程
- 一张图告诉你,自学编程和科班程序员的差别在哪!网友:很真实
- 《众妙之门——网页排版设计制胜秘诀》——导读
- 促销方式脑图(转载图灵学院)
- 不能忘记陪我们长大的100部电影
- 端游与页游之战:微端网游突出重围
热门文章
- h5+、mui创建手机APP,华为等手机底部虚拟按键问题
- [原创] Microsoft Word 2010 关闭不正常(提示:已停止工作,Windows正在检查该问题的解决方案。。) 问题的解决
- 安装Proxmox VE系统报错
- 2021-12-13 309
- 虹科分析 | 终端安全 | 移动目标防御是“变革性”技术——GARTNER
- JAVA801_Lambda表达式的格式、使用前提、省略模式、注意事项、和匿名内部类的区别
- PL/SQL中Lpad函数和Rpad函数的用法
- 突然发现哥就是一个传奇
- 物联网供应商,主要面临哪些安全挑战?
- EE302 - Lab 5