QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 1024 MB 總分: 100

#5432. 乐高积木搭建比赛

统计

你和你宿敌 Gohu 参加了一场乐高搭建比赛。你们沿着 $x$ 轴搭建了许多高度和美观度各不相同的塔,现在正等待评委到来。计分规则如下:如果你的某座塔美观度为 $f$,高度为 $h$ 个乐高积木,那么你将获得 $f \cdot h$ 分。

乐高搭建比赛是一项世界闻名的赛事,因此有许多无人机在空中飞来飞去,拍摄所有美丽的塔。为了防止无人机撞上塔(从而撞倒被撞击积木及以上的所有积木),摄制组沿着 $x$ 轴放置了许多不同高度的无线电桅杆。无人机每向前移动一个单位,可以向上或向下移动一个单位,并且总是会尽可能贴近地面飞行(以获得塔的最佳拍摄角度),同时绝不会低于任何桅杆。在下方的图片中,你可以看到桅杆如何影响无人机路径的示意图。

突然,摄制组转过头去!你决定迅速移除线路上的一些桅杆,以便无人机开始撞击塔。如果无人机在移除桅杆后,在某列以高度 $h$ 飞行,而该列有一座高度至少为 $h$ 的塔,那么无人机就会撞上这座塔。塔的新高度随后变为 $h - 1$。其美观度保持不变。如果无人机在高度 $h$ 时撞上一座塔,塔的新高度变为 $h - 1$,但其美观度保持不变。保证初始放置的桅杆使得无人机不会撞上任何塔。

你应该移除哪些桅杆,以使你的利润(你的得分与 Gohu 得分之差)最大化?

输入格式

第一行包含三个整数 $A, B, M$ ($1 \le A, B, M \le 2000$):你搭建的塔的数量、Gohu 搭建的塔的数量以及桅杆的数量。

接下来有 $A$ 行,每行包含整数 $x, f, h$ ($1 \le x \le 10^6, 1 \le f \le 100, 1 \le h \le 10000$),表示你的一座塔的位置、美观度和高度。

接下来有 $B$ 行,每行包含整数 $x, f, h$ ($1 \le x \le 10^6, 1 \le f \le 100, 1 \le h \le 10000$),表示 Gohu 的一座塔的位置、美观度和高度。

最后有 $M$ 行,每行包含整数 $x, h$ ($1 \le x \le 10^6, 1 \le h \le 10000$),表示一座桅杆的位置和高度。

没有任何两座塔的 $x$ 坐标相同,桅杆之间也是如此。然而,桅杆的 $x$ 坐标可能与塔的 $x$ 坐标相同。

输出格式

输出一个整数:如果你能最优地选择移除哪些桅杆,所能达到的最大值(你的得分 - Gohu 的得分)。

子任务

你的解法将在多个测试用例组上进行测试。为了获得某一组的分数,必须通过该组中的所有测试用例。

组别 分值 约束条件
1 23 桅杆的 $x$ 坐标小于塔的 $x$ 坐标。
2 10 $A, B, M \le 8$
3 22 $A, B, M \le 100$
4 45 无额外约束。

说明

在所有图片中,你的塔用蓝色表示,Gohu 的塔用红色表示。

图 1:样例 1

图 2:样例 2

在第一个样例中,最优方案是仅移除第一个桅杆。无人机随后将在最左侧塔所在的列以高度 1 飞行,该塔将被完全摧毁。此后,你有 2 分,Gohu 有 $0 + 1$ 分,分差为 1 分。

在第二个样例中,你能做的最好方案是移除第二个和第三个桅杆。无人机随后将以高度 5, 6, 5, 4, 3, 4, 5, 6, 7, 8 飞行。因此,第一、第三和第四座塔会损失一个积木,而第二座和最后一座塔完全不受影响。塔的高度将变为 4, 5, 3, 3, 6。 此后,你有 $500 + 30 + 120 = 650$ 分,Gohu 有 $400 + 30 = 430$ 分,分差为 220 分。

图 3:样例 3

在第三个样例中,最优方案是移除第二个和第三个桅杆。此后,你有 20 分,Gohu 有 9 分,分差为 11 分。

样例

输入 1

1 2 2
4 1 2
1 1 3
6 1 1
2 4
5 3

输出 1

1

输入 2

3 2 4
2 100 5
4 10 4
9 20 6
1 100 5
6 10 4
2 5
3 7
8 6
10 7

输出 2

220

输入 3

1 2 3
4 10 5
6 20 3
5 9 2
2 3
3 6
1 5

输出 3

11

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.