#P5616. 「一本通 5.6 例 3」任务安排 3

    ID: 4617 传统题 1000ms 512MiB 尝试: 5 已通过: 4 难度: 7 上传者: 标签>动态规划斜率优化算法基础二分CF2200

「一本通 5.6 例 3」任务安排 3

「一本通 5.6 例 3」任务安排 3

题目描述

NN 个任务排成一个序列,等待在一台机器上执行。任务编号为 1,2,,N1,2,\ldots,N,它们的执行顺序不能改变。

你需要将这 NN 个任务划分成若干批。每一批必须由原序列中一段连续的任务组成,各批按照任务编号从小到大的顺序依次处理。

机器从时刻 00 开始工作。处理每一批任务之前,机器都需要花费 SS 的启动时间。之后,该批中的任务按照原顺序依次执行,第 ii 个任务单独执行所需的时间为 TiT_i

一个任务执行完后,并不会立即产生结果,而是需要等待所在批次的所有任务全部执行完毕。也就是说,同一批中的所有任务具有相同的完成时刻

例如,若某一批包含任务 x,x+1,,yx,x+1,\ldots,y,并在时刻 tt 开始处理,那么该批所有任务的完成时刻均为

t+S+i=xyTit+S+\sum_{i=x}^{y}T_i

对于第 ii 个任务,给定一个费用系数 CiC_i。若该任务的完成时刻为 OiO_i,则它产生的费用为

Oi×CiO_i\times C_i

一种分组方案的总费用等于所有任务费用之和。

请你合理划分这些任务,使得总费用最小,并输出这个最小值。

需要特别注意的是,虽然 TiT_i 表示任务的处理时间,但在本题的数据中,TiT_i 可能为负数

输入格式

第一行包含两个整数 N,SN,S,分别表示任务数量和每批任务开始前所需的启动时间。

接下来 NN 行,第 ii 行包含两个整数 Ti,CiT_i,C_i,分别表示第 ii 个任务的处理时间和费用系数。

输出格式

输出一行一个整数,表示所有合法分组方案中最小的总费用。

样例

5 1
1 3
3 2
4 3
2 3
1 4
153

样例说明

一种最优的划分方法为:

  • 第一批:任务 1,21,2
  • 第二批:任务 33
  • 第三批:任务 4,54,5

三批任务的完成时刻分别为 5,10,145,10,14,因此各任务的完成时刻为

5,5,10,14,145,5,10,14,14

对应的费用分别为

15,10,30,42,5615,10,30,42,56

总费用为

15+10+30+42+56=15315+10+30+42+56=153

因此答案为 153153

数据范围与提示

对于全部数据:

  • 1N3×1051\le N\le 3\times10^5
  • 1S281\le S\le 2^8
  • Ti28|T_i|\le 2^8
  • 0Ci280\le C_i\le 2^8

特别地,TiT_i 可能为负数。