#P5902. [IOI2009] Salesman

[IOI2009] Salesman

题目背景

IOI2009 D2T4

题目描述

旅行商已经发现,最佳的陆上旅行计划是一个难以解决的计算问题,所以他将他的生意转移到多瑙河的线性世界。他有一条很快的船,可以在很短的时间内把他从沿河的任何地方送到任何地方,但不幸的是,这条船耗油量很大。旅行商向上游(靠近河流源头的方向)移动每一米的成本为 UU 美元,向下游(远离河流源头的方向)移动每一米的成本为 DD 美元。

沿河有 NN 个展销会,旅行商想参加。每场展销会只举行一天。对于每个展销会 XX,旅行商知道它的日期 TXT_X(他买船后的天数为第 00 天),集市的位置 LXL_X 和他在这场集市上能获得的盈利 MXM_X。位置表示集市到河流源头的距离,以米为单位。他必须在位置为 SS 的家 开始和结束 他的旅程。

帮助旅行商选择参加哪些展销会(如果有的话)以及按什么顺序,这样他可以在旅行结束时最大化他的利润。旅行商的总利润是指他在参加集市时获得的美元减去他在河上下游旅行所花费的美元的总和。

请记住,如果展销会 AA 的举办时间早于展销会 BB,则旅行商只能按此顺序去展销会(即,他不能先去展销会 BB,然后再去展销会 AA)。但是,如果两个集市在同一天举行,旅行商可以按任何顺序参观。旅行商一天去多少个集市是没有限制的,但他不能在同一个集市盈利两次。他可以经过他已经参观过的集市而一无所获。

任务:编写一个程序,给定所有展销会的日期,位置和旅行商的盈利额,以及旅行商的家的位置和他移动的代价,求出他在旅行结束时的最大利润。

输入格式

第一行包含四个整数 N,U,D,SN, U, D, S,分别由一个空格隔开,分别表示展销会数,向上游(UU)或下游(DD)移动的单位代价,以及旅行商的家的位置。

接下来的 NN 行描述了 NN 个展销会。其中第 kk 行描述了第 kk 个展销会的信息,包含三个整数,分别由一个空格隔开,分别表示展销会日期 TkT_k,它的位置 LkL_k,以及旅行商在该次展销会能获得的的盈利 MkM_k

输出格式

一行一个整数表示旅行商在旅行结束时的最大利润。

4 5 3 100
2 80 100
20 125 130
10 75 150
5 120 110

50

提示

样例解释

在一个最优方案中,旅行商参加了编号为 1133 的展销会(位置分别为 80807575)。事件序列以及对应的利润如下:

  • 旅行商从家出发,向上游移动 2020 米,花费 100100 美元。目前利润:100-100
  • 旅行商参加展销会 11 并赚取 100100 美元。目前利润:00
  • 旅行商向上游移动 55 米,花费 2525 美元。目前利润 25-25
  • 旅行商参加展销会 33 并赚取 150150 美元。目前利润:125125
  • 旅行商向下游移动 2525 米,回到自己的家,花费 7575 美元。最终利润:5050

数据范围与约定

  • 对于 60%60\% 的数据,没有两个展销会在同一天举行。
  • 对于 40%40\% 的数据,输入的所有数不超过 50005000
  • 同时满足上述两个条件的数据有 15%15\%,至少满足上述一个条件的数据有 85%85\%
  • 对于 100%100\% 的数据,1N,Tk5×1051 \le N, T_k \le 5\times 10^51DU101 \le D \le U \le 101S,Lk5×105+11 \le S, L_k \le 5 \times 10^5 +11Mk40001 \le M_k \le 4000