POJ 1180 Batch Scheduling 已翻译

来源:互联网 发布:武汉知乎青年旅舍 编辑:程序博客网 时间:2024/06/05 16:01

描述

在一台机器上有一系列N个作业要处理。作业编号从1到N,所以序列是1,2,...,N。作业序列必须分成一个或多个批次,其中每个批次由序列中的连续作业组成。处理在时间0开始。如下从第一批开始逐一处理批次。如果批次b包含的编号小于批次c的作业,则批次b在批次c之前处理。批次中的作业在机器上连续处理。在处理一个批次中的所有作业之后,机器立即输出该批次中所有作业的结果。作业j的输出时间是包含j的批处理完成的时间。

设置每个批次的机器需要一个设置时间S.对于每个工作i,我们知道其成本因子Fi和处理它所需的时间Ti。如果批次包含作业x,x + 1,...,x + k,并且在时间t开始,则该批次中每个作业的输出时间为t + S +(Tx + Tx + 1 + + Tx + k)。请注意,机器同时输出批处理中所有作业的结果。如果作业i的输出时间为Oi,其成本为Oi * Fi。例如,假设存在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},则输出时间(O1,O2,O3,O4,O5)=(5,5,10,14,14),工作的成本分别为(15,10,30,42,56)。分区的总成本是所有作业的成本之和。上述示例分区的总成本为153。

您将编写一个程序,考虑到批处理设置时间和一系列作业及其处理时间和成本因素,计算最小可能的总成本。


输入

您的程序从标准输入读取。第一行包含作业数N,1 <= N <= 10000。第二行包含批处理建立时间S,它是一个整数,0 <= S <= 50。以下N行包含有关作业1的信息,2,...,N。首先在这些行的每一行上是整数Ti,1 <= Ti <= 100,作业的处理时间。之后,有一个整数Fi,1 <= Fi <= 100,作业的成本因素。

输出

您的程序写入标准输出。输出包含一行,其中包含一个整数:最小可能的总成本。


0 0