#xLYHDPlydlt50x5A04. 任务安排3
任务安排3
好的,这里为你整理成完整的、清晰的中文题面,格式完全规范,适合直接上传到算法平台。
题目描述
有 ( N ) 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。
机器会把这 ( N ) 个任务分成若干批,每一批包含连续的若干个任务。
从时刻 ( 0 ) 开始,任务被分批加工,执行第 ( i ) 个任务所需的时间是 ( T_i )。
另外,在每批任务开始前,机器需要 ( S ) 的启动时间,因此执行一批任务所需的总时间是启动时间 ( S ) 加上该批中所有任务所需时间之和。
一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕。也就是说,同一批任务的所有任务在同一时刻完成。
每个任务的费用是它的完成时刻乘以一个费用系数 ( C_i )。
请为机器规划一个分组方案,使得总费用最小。
输入格式
第一行包含两个整数 ( N ) 和 ( S )。
接下来 ( N ) 行,每行包含两个整数 ( T_i ) 和 ( C_i ),表示第 ( i ) 个任务单独完成所需的时间 ( T_i ) 及其费用系数 ( C_i )。
输出格式
输出一个整数,表示最小总费用。
数据范围
- ( 1 \le N \le 3 \times 10^5 )
- ( 0 \le S \le 512 )
- ( 0 \le C_i \le 512 )
- ( -512 \le T_i \le 512 )
(注意:( T_i ) 可能为负数或零,意味着某些任务可能“缩短”该批次的总时间,但机器仍需要启动时间 ( S );同时也需考虑序列顺序,不得重排任务。)
输入样例
5 1
1 3
3 2
4 3
2 3
1 4
输出样例
153
样例解释
任务数据
| 任务编号 | ( T_i ) | ( C_i ) |
|---|---|---|
| 1 | 3 | |
| 2 | 3 | 2 |
| 3 | 4 | 3 |
| 4 | 2 | |
| 5 | 1 | 4 |
启动时间 ( S = 1 )。
最优分组方案
将任务分成 3 批:
-
第一批:任务 1 和任务 2
任务时间总和 = ( 1 + 3 = 4 )
本批用时 = ( S + 4 = 1 + 4 = 5 )
本批完成时刻 = ( 0 + 5 = 5 )
任务 1 费用 = ( 5 \times 3 = 15 )
任务 2 费用 = ( 5 \times 2 = 10 ) -
第二批:任务 3
任务时间总和 = ( 4 )
本批用时 = ( S + 4 = 1 + 4 = 5 )
本批完成时刻 = ( 5 + 5 = 10 )
任务 3 费用 = ( 10 \times 3 = 30 ) -
第三批:任务 4 和任务 5
任务时间总和 = ( 2 + 1 = 3 )
本批用时 = ( S + 3 = 1 + 3 = 4 )
本批完成时刻 = ( 10 + 4 = 14 )
任务 4 费用 = ( 14 \times 3 = 42 )
任务 5 费用 = ( 14 \times 4 = 56 )
总费用计算
[ 15 + 10 + 30 + 42 + 56 = 153 ]
该方案满足所有任务按顺序分批,同一批内任务同时完成,且总费用最小。