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 ...
最新文章
- 太牛逼了!项目中用了Disruptor之后,性能提升了2.5倍
- 知识驱动的推荐系统:现状与展望
- 推荐几款不错的写作利器
- 【代码托管】如何使用Git工具托管本地代码到GitHub(也许是最简单易懂的图文教程)【含 Git+第三方工具TortoiseGit+中文语言包 百度云盘资源】
- Cisco Nexus 1000V
- 判断表达式值是否为空_如何在 Python 中判断列表是否为空
- Linux Software RAID的rebuild速度。
- Java学习日报—SQL基础—2021/11/29
- 硬件开源为什么如此之难?
- 浅谈 js 正则字面量 与 new RegExp 执行效率
- 问题五十四:怎么用ray tracing画参数方程表示的曲面(2)—— bezier surface
- tomcat7官网下载
- 推荐克莱夫·汤普森《天才程序员》
- ip扫描命令 linux,如何使用Linux扫描网络上的IP地址
- Mixly第三方自定义用户库实现
- android 时钟动态图标,神奇的Android动态时钟/时间UI界面
- 计算机桌面亮度调节,电脑屏幕亮度怎么调?笔记本屏幕亮度调节方法图解教程 电脑维修技术网...
- 看了这篇文章,再也不用纠结该选OV证书还是EV证书了
- 如何用python整理表格_Python 自动整理 Excel 表格
- iPhone手机数据找回指南2:iPhone手机使用技巧
热门文章
- linux df命令none,linux磁盘命令中df命令的作用
- 怎么选最快dns服务器,如何可以选择适合自己的最快的DNS服务器?
- Rtools安装步骤,快速高效!
- 2017上半年技术文章集合【Android】—184篇文章分类汇总
- 联想携手北京华联打造智慧商城 | Face++完成4.6亿美元C轮融资【软件网每日新闻播报│第11-1期】
- 小蜜蜂轻易破解数学大难题“旅行商问题”
- 听说:用过这几个网站的程序员,早已领先身边人一大截!
- 大学计算机 信息编码与数据表示什么意思,大学计算机之-计算机中信息编码ppt课件...
- 数值 ELO算法教程
- 心电监护仪、呼吸机、超声电机