QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100

#12792. 推销员

统计

旅行推销员认为在陆地上安排行程是一个极其复杂的计算问题,因此他决定将业务转移到多瑙河的线性世界中。他有一艘非常快的船,可以让他瞬间从河上的任何地方到达任何地方,但不幸的是,这艘船的燃油消耗非常惊人。推销员每向上游(朝河流源头方向)行驶一米需要花费 $U$ 美元,每向下游(远离河流源头方向)行驶一米需要花费 $D$ 美元。

沿河有 $N$ 个贸易博览会,推销员想要参加。每个博览会仅举办一天。对于每个博览会 $X$,推销员知道其日期 $T_X$(以他购买船只后的天数计算)。他还知道博览会的位置 $L_X$(以从河流源头向下游计算的距离(米)为单位),以及如果他参加该博览会所能获得的利润 $M_X$(美元)。他必须从位于河边且距离河流源头 $S$ 米处的家中出发,并最终回到家中。

请帮助推销员选择参加哪些博览会(如果有的话)以及以什么顺序参加,以便他在旅程结束时获得最大利润。推销员的总利润定义为他参加博览会所获得的美元总额,减去他在河上上下往返所花费的美元总额。

请记住,如果博览会 $A$ 的举办日期早于博览会 $B$,则推销员只能按此顺序参加(即他不能先参加 $B$ 再参加 $A$)。但是,如果两个博览会在同一天举办,推销员可以按任意顺序参加这两个博览会。推销员一天内可以参加的博览会数量没有限制,但显然他不能参加同一个博览会两次并获得两次收益。他可以经过已经参加过的博览会而不获得任何收益。

任务

编写一个程序,根据所有博览会的日期、位置和盈利能力,以及推销员家的位置和他的旅行成本,确定他旅程结束时可能获得的最大利润。

数据范围

  • $1 \le N \le 500,000$:博览会的数量
  • $1 \le D \le U \le 10$:向上游 ($U$) 或下游 ($D$) 行驶一米的成本
  • $1 \le S \le 500,001$:推销员家的位置
  • $1 \le T_k \le 500,000$:博览会 $k$ 举办的日期
  • $1 \le L_k \le 500,001$:博览会 $k$ 的位置
  • $1 \le M_k \le 4,000$:参加博览会 $k$ 可获得的利润(美元)

输入格式

程序必须从标准输入读取以下数据: 第一行包含整数 $N, U, D$ 和 $S$,按此顺序排列,以空格分隔。 接下来的 $N$ 行描述了 $N$ 个博览会,顺序不限。这 $N$ 行中的第 $k$ 行描述了第 $k$ 个博览会,包含三个以空格分隔的整数:博览会的日期 $T_k$、其位置 $L_k$ 以及推销员的盈利能力 $M_k$。

注意:输入中给出的所有位置都是不同的。也就是说,没有两个博览会在同一位置举办,也没有博览会在推销员的家中举办。

输出格式

程序必须向标准输出写入一行,包含一个整数:推销员旅程结束时可能获得的最大利润。

子任务

  • 对于总分 60 分的测试点,没有两个博览会在同一天举办。
  • 对于总分 40 分的测试点,输入中的所有数字均不超过 5,000。
  • 同时满足上述两个条件的测试点得 15 分。
  • 至少满足上述两个条件之一的测试点得 85 分。

样例

样例输入 1

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

样例输出 1

50

说明

一个最优的行程是参加博览会 1 和 3(分别位于位置 80 和 75)。事件序列及其相关的利润和成本如下: 推销员向上游行驶 20 米,花费 100 美元。目前利润:-100 他参加博览会 1 并获得 100 美元。目前利润:0 他向上游行驶 5 米,花费 25 美元。目前利润:-25 他参加博览会 3 并获得 150 美元。目前利润:125 * 他向下游行驶 25 米返回家中,花费 75 美元。最终利润:50

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.