苹果加工厂
时间限制:1秒 内存限制:256M
【题目描述】
小H的苹果加工厂每天可以加工 \(N\) 箱新鲜的苹果,其中第 \(i\) 箱苹果加工完成需要 \(t_i\) 个单位时间。简陋的工厂没有保鲜仓库,苹果箱在工厂多放一分钟,其新鲜度会减少 1,所以需要尽快把所有的苹果运往超市售卖。
小H只有一辆容量超大的运输车,往返一趟工厂和超市需要花费 \(T\) 分钟,因为运输车有具有保鲜功能,所以苹果在运输车上新鲜度不会减少。那么小H要怎样调度运输车的运行,才能让所有苹果损失的新鲜度之和最小?
注意:运输车回到工厂后可即刻出发,忽略苹果的装车时间。
【输入格式】
第一行为两个整数:\(N,T\),意义如题目描述。
接下来的 \(N\) 行,每行一个非负整数,其中第 \(i+1\) 行表示 \(t_i\),即第 \(i\) 箱苹果的完成时间。
【输出格式】
输出一个整数,表示所有苹果损失的新鲜度之和的最小值。
【输入输出样例】
Input
5 4
2
5
6
10
13
Output
2
【样例解释】
第 1 箱苹果在第 2 分钟完成加工,可以立即运走,新鲜度损失 0,运输车在第 6 分钟返回工厂。
第 2 箱苹果在第 5 分钟完成加工,第 3 箱苹果在第 6 分钟完成加工,这两箱苹果在第 6 分钟一起运走,第 5 箱苹果需要等待1分钟,新鲜度会损失 1,运输车在第 10 分钟返回工厂。
第 4 箱苹果在第 10 分钟完成加工,可以立即被运走,新鲜度损失 0,运输车在第 14 分钟返回工厂。
第 5 箱苹果在第 13 分钟完成加工,需要等待 1 分钟才可运走,新鲜度损失 1。
至此,所有的苹果都被运走,总新鲜度损失为 2,可以证明,没有新鲜度损失更小的方案。
【数据限制】
数据范围与约定:\(N≤1000,T≤1000\)。
• 测试点 1-2 满足 \(N≤10,T=1,0≤t_i≤100\)。
• 测试点 3-6 满足 \(N≤20,T≤2,0≤t_i≤100\)。
• 测试点 7-10 满足 \(N≤500,T≤100,0≤t_i≤10000\)。
• 测试点 11-14 满足 \(N≤500,T≤10,0≤t_i≤4000000\)。
• 测试点 15-20 满足 \(N≤500,T≤100,0≤t_i≤4000000\)。
【来源】
Mr.he**