AcWing 301 任务安排2
题目描述: 有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。 机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。 从时刻0开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。 另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。 一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕。 也就是说,同一批任务将在同一时刻完成。 每个任务的费用是它的完成时刻乘以一个费用系数 Ci。 请为机器规划一个分组方案,使得总费用最小。 输入格式 第一行包含整数 N。 第二行包含整数 S。 接下来N行每行有一对整数,分别为 Ti 和 Ci,表示第 i 个任务单独完成所需的时间 Ti 及其费用系数 Ci。 输出格式 输出一个整数,表示最小总费用。 数据范围 1≤N≤3∗10^5, 1≤Ti,Ci≤512, 0≤S≤512 输入样例: 5 1 1 3 3 2 4 3 2 3 1 4 输出样例: 153 分析: 在 AcWing 300 任务安排1 中,我们使用了费用提前计算的技巧,实现了本题平方级别的算法,对于本题增加的数据范围,显然平方级别的算法不足以解决问题,我们在上一题中推导出了本题的状态转移方程f[i] = min(f[j] + (sc[i] - sc[j])*st[i] + (sc