问题描述:
在一台超级计算机上,编号为1,2,…,n的n个作业等待批处理。批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业。从时刻0开始,分批加工这些作业。在每批作业开始前,机器需要启动时间S,而完成这批作业所需的时间是单独完成批中各个作业需要时间的总和。单独完成第i个作业所需的时间是ti,所需的费用是它的完成时刻乘以一个费用系数fi。同一批作业将在同一时刻完成。例如,如果在时刻T开始一批作业x,x+1,…,x+k,则这一批作业的完成时刻均为T+S+(tx+tx+1+…+tx+k)。最优批处理问题就是要确定总费用最小的批处理方案。例如,假定有5个作业等待批处理,且S=1,(t1,t2,t3,t4,t5)=(1,3,4,2,1),(f1,f2,f3,f4,f5)=(3,2,3,3,4)。如果采用批处理方案{1,2},{3},{4,5},则各作业的完成时间分别为(5,5,10,14,14),各作业的费用分别为(15,10,30,42,56),因此,这个批处理方案总费用是153。

算法设计:
对于给定的待批处理的n个作业,计算其总费用最小的批处理方案。
数据输入:
由文件Input.txt提供输入数据。文件的第1行是待批处理的作业数n,第2行是启动时间S。接下来每行有2个数,分别为单独完成第i个作业所需的时间是ti和所需的费用系数fi。
结果输出:
将计算出的最小费用输出到文件output.txt中。

输入文件示例
Input.txt output.txt
5 153
1
1 3
3 2
4 3
2 3
1 4

设计思路:
分析题目,因为每批完成的作业必须相邻,即只能{1,2}{3},不能{1,3}{2},因此可以用动态规划来解决。设置一个minBatchCost数组,minBatchCost[i][t]表示处理第i到第n-1个作业,从时间t开始的最小开销。调用minBatchCost[0][0],即为处理第0个作业到第n-1个作业,从0时刻开始的最小开销,即为题目所求。
对于待处理作业i到n-1,不断求出第i到i+1,i到i+2……i到n-1的最小花费并填入minBatchCost。只要没有计算到第n-1个作业,就递归处理后面的任务,直到处理完所有的作业。

#include <bits/stdc++.h>
using namespace std;const int N = 10000;
const int M = 1e4;int n,s;
int t[N+10],f[N+10];
int tt[N+10],ff[N+10];
int dp[N+10];int main(){//freopen("C://Users//Administrator//Desktop//测试数据//ch3//prog32//test//batch20.in","r",stdin);cin >> n;cin >> s;for (int i = 1;i <= n;i++) cin >> t[i] >> f[i];for (int i = n;i >= 1;i--){tt[i] = tt[i+1] + t[i];ff[i] = ff[i+1] + f[i];}dp[n+1] = 0;for (int i = n;i >= 1;i--){dp[i] = -1;for (int j = i+1;j <= n+1;j++){int temp = dp[j] + ff[i]*(s+tt[i]-tt[j]);if (dp[i]==-1) dp[i] = temp;else dp[i] = min(dp[i],temp);}}printf("%d\n",dp[1]);return 0;
}

在一台超级计算机上,编号为1,2,…,n的n个作业等待批处理。批处理的任务就是将这n个作业分成若干批,每批包含相邻的若干作业。从时刻0开始,分批加工这些作业。在每批作业开始前,机器需要启动时间S,而完相关推荐

  1. 运行linux较好的电脑,现在Linux运行在 99.6%的TOP500超级计算机上

    虽然 Linux 在桌面操作系统只有 2% 的市场占有率,但是对于超级计算机来说top500超级计算机排行榜,Linux 用 99% 的市场占有率轻松地获取了统治地位. 运行两台或多台相同或类型相差不 ...

  2. 局域网计算机中arp,在局域网中的一台计算机上使用了arp-a命令,有如下输出: C:\arp.a Interface: 192.168.0.1 0n - 赏学吧...

    在局域网中的一台计算机上使用了arp-a命令,有如下输出: C:\arp.a Interface: 192.168.0.1 0n Interface Ox1000004 Intemet Address ...

  3. 神威 计算机 应用,Gromacs在神威蓝光超级计算机上的部署和应用(2)

    任何软件或硬件故障(包括网络通信故障,CPU异常等)都可能导致计算中断. 尽管应用程序已在其代码层中添加了一些故障监视和自动恢复功能,但超级计算系统还具有异常监视和检查点等机制来保留计算状态以进行恢复 ...

  4. 计算机查找是什么意思,计算机的字长是什么意思?怎么查找一台计算机上的字长啊?...

    计算机的字长是什么意思?怎么查找一台计算机上的字长啊? 來源:互聯網  2010-02-21 21:51:42  評論 分類: 電腦/網絡 參考答案: 1.位(bit) 来自英文bit,音译为&quo ...

  5. 一台计算机有64,在同一台计算机上使用带有32位和64位Altium设计软件的数据库元件库...

    数据库元件库(DbLibs)是一种流行且强大的元器件管理解决方案.但是,将Microsoft Access用作元器件的后端数据库时,使用Altium设计软件的32位和64位版本之间有一个重要区别: 6 ...

  6. 一台物理机上VMware虚拟机实现拨号上网同时内网通信

    一台物理机上VMware虚拟机实现拨号上网同时内网通信 前言:数据走向就是底下的图,看起来是不是很简单很easy 一:准备在VMware vSphere Client上面准备两台windows2003 ...

  7. 不同平台上安装python的方式是一样的对还是错_不可以在同一台计算机上安装多个不同的Python版本...

    [多选题]食品处于冰点以上时,影响水分活度 A w 的因素有( ). [单选题]不属于蛋白质起泡的必要条件的是() [多选题]蛋白质变性后,可能出现的变化() [单选题]腐竹的加工应用的是蛋白质的哪种 ...

  8. activemq 实例_在一台计算机上运行多个ActiveMQ实例

    activemq 实例 几周前,我再次通过Mule ESB解决方案将Apache ActiveMQ用作JMS提供程序. 由于使用ActiveMQ已经有几年了,所以我认为最好检查一些(新)功能,例如故障 ...

  9. eddystone_超级计算机上的Linux,Google的Eddystone和更多新闻

    eddystone 在本周的开放源代码新闻摘要中,我们将介绍超级计算机上的Linux,Google的Eddystone等! 2015年7月11日至17日的开源新闻摘要 Google的新Eddyston ...

最新文章

  1. iOS infoplist 权限设置
  2. Django(part33)--数据库的迁移
  3. SAP Spartacus Customizing CMS Components
  4. 关于x86、x86_64/x64、amd64和arm64/aarch64
  5. retrofit与rxjava使用
  6. android 获取wifi的ip地址吗,Android获取有线和无线(wifi)的IP地址
  7. delphi switch语句例子_Python系列之常用语句
  8. 【Sqoop】Sqoop job实现增量导入的原理
  9. 命令行管理sql server
  10. 安装西门子博图一直重启_博途V15.1安装及无限重启和.net3.5SP1错误处理解决方法...
  11. html5图标用什么格式转换,ico转png 怎么把ico格式转换成png格式
  12. element-ui ele-calendar 清除选中 事件
  13. 十进制转换为N进制C语言
  14. ubuntu 下搭建gitLab
  15. C#与Word文档的交互
  16. AS3多人游戏开发—同步人物移动
  17. android画图之贝塞尔曲线讲解
  18. 【高端论坛】王家耀院士:大变化时代的地图科学(全文PPT分享)
  19. 查看树莓派系统及版本
  20. 2021年线下“领航杯” MISC-《whatis.zip》解题WP

热门文章

  1. MySQL 中存储时间的最佳实践
  2. 高薪进大厂 | 面试指南
  3. 2019 年 8 月编程语言排行榜,Java涨幅不行!
  4. N个Java开发常用规范技巧总结
  5. Go Modules 的智障版本选择
  6. 动态规划套路:最大子数组和
  7. 最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)
  8. nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
  9. PyTorch:MNIST数据集手写数字识别
  10. leetcode 452. Minimum Number of Arrows to Burst Balloons | 452. 用最少数量的箭引爆气球(左程云:最大线段重合问题)