#P2399. E48 单调队列优化DP CF372C Watching Fireworks is Fun

E48 单调队列优化DP CF372C Watching Fireworks is Fun

CF372C Watching Fireworks is Fun

题目描述

一个节日将在城镇的主街道上举行。主街道被划分为 nn 个区域,这些区域从左到右依次编号为 11nn。相邻区域之间的距离为 11 单位长度。

节日期间将发射 mm 个烟花。第 ii 次(1im1 \leq i \leq m)发射将在时间 tit_{i} 于区域 aia_{i} 进行。如果你在第 ii 次发射时位于区域 xx1xn1 \leq x \leq n),你将获得幸福值 biaixb_{i} - |a_{i} - x|(注意幸福值可能为负数)。

你可以在单位时间间隔内移动最多 dd 单位长度,但禁止移动到主街道之外。你可以在初始时刻(时间等于 11 时)处于任意位置,目标是最大化观看烟花获得的总幸福值。求可能的最大总幸福值。

注意多个烟花可能在同一时间发射。

输入格式

第一行包含三个整数 nnmmdd1n1500001 \leq n \leq 1500001m3001 \leq m \leq 3001dn1 \leq d \leq n)。

接下来 mm 行,每行包含三个整数 aia_{i}bib_{i}tit_{i}1ain1 \leq a_{i} \leq n1bi1091 \leq b_{i} \leq 10^{9}1ti1091 \leq t_{i} \leq 10^{9})。第 ii 行描述第 ii 次发射的信息。

保证满足 titi+1t_{i} \leq t_{i+1}1i<m1 \leq i \lt m)的条件。

输出格式

输出一个整数——观看所有烟花所能获得的最大幸福值总和。

输入输出样例 #1

输入 #1

50 3 1
49 1 1
26 1 4
6 1 10

输出 #1

-31

输入输出样例 #2

输入 #2

10 2 1
1 1000 4
9 1000 4

输出 #2

1992

说明/提示

翻译由 DeepSeek R1 完成