QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#12638. 飞镖游戏

Statistics

飞镖游戏是一个有趣的运动,你向靶子上投掷多枚飞镖,并根据它们的位置获得分数。本题中的游戏规则略有不同。

靶子可以被视为一个无限的二维平面,你已经投掷了 $N$ 枚飞镖。对于每一枚飞镖,已知其在靶子上的位置 $(X, Y)$,以及如果你算上这枚飞镖所能获得的分数(该分数可正可负,且不同飞镖即使在同一位置也可能拥有不同的分数)。

计分方式如下:在投掷完 $N$ 枚飞镖后,你需要画一个边长为 $L$ 的正方形,且该正方形的中心必须恰好位于 $(0, 0)$。你可以以任意方式旋转该正方形。之后,所有位于该正方形内部或边界上的飞镖分数之和即为你的得分。注意,在考虑任何飞镖之前,你只能旋转一次正方形。

给定每枚飞镖的位置和分数,以及 $L$ 的值,你的任务是画出一个能获得最大可能分数的正方形(正方形内不包含任何飞镖也是允许的)。

输入格式

你的程序将在一个或多个测试用例上进行测试。输入的第一行是一个整数 $T$ ($1 \le T \le 100$),表示测试用例的数量。

每个测试用例的第一行包含一个整数 $N$ ($1 \le N \le 10^5$),表示飞镖的数量,随后是一个空格,再接一个整数 $L$ ($1 \le L \le 10^5$),表示正方形的边长。

接下来有 $N$ 行,每行包含 3 个由空格分隔的整数 $X, Y, S$,表示在点 $(X, Y)$ 处有一枚飞镖,如果它被计入,将为你提供 $S$ 分 ($-10^5 \le X, Y, S \le 10^5$)。

输出格式

对于每个测试用例,打印一行,包含画出正方形后能获得的最大得分。

样例

样例输入 1

2
5 8
4 5 100
3 3 4
-2 -2 -3
-1 1 2
4 -1 -101
7 10
1 1 -10
-1 1 -10
1 -1 -10
-1 -1 -10
0 1 -10
1 0 -10
2 2 -1000

样例输出 1

3
-1060

说明

下图展示了第一个样例测试用例,我们无法获取分数为 100 的点,但我们可以稍微旋转正方形,使其不再包含分数为 -101 的点。

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.