#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. 第一批:任务 1 和任务 2
    任务时间总和 = ( 1 + 3 = 4 )
    本批用时 = ( S + 4 = 1 + 4 = 5 )
    本批完成时刻 = ( 0 + 5 = 5 )
    任务 1 费用 = ( 5 \times 3 = 15 )
    任务 2 费用 = ( 5 \times 2 = 10 )

  2. 第二批:任务 3
    任务时间总和 = ( 4 )
    本批用时 = ( S + 4 = 1 + 4 = 5 )
    本批完成时刻 = ( 5 + 5 = 10 )
    任务 3 费用 = ( 10 \times 3 = 30 )

  3. 第三批:任务 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 ]

该方案满足所有任务按顺序分批,同一批内任务同时完成,且总费用最小。