AT_ajo2024_final_d.Shooting the Stars

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在数轴上有 NN 个星星,按照坐标从小到大的顺序编号为 11 到 NN。第 ii 个星星(1≤i≤N1 \leq i \leq N)的坐标是 XiX_i,亮度是 AiA_i。

AtCoder 想要拍摄其中一些星星的照片。AtCoder 可以自由选择数轴上的一个区间,把该区间内的星星拍摄下来。在照片中,某些星星可能因为太亮而被看作同一个星星。具体规则如下:

  1. 若星星 ii 和星星 jj 满足 ∣Xi−Xj∣≤Ai+Aj|X_i - X_j| \leq A_i + A_j,这两颗星会被视为同一颗星。
  2. 如果星星 ii 和 kk 被视为同一颗星,星星 kk 和 jj 也被视为同一颗星,那么星星 ii 和 jj 也会被视为同一颗星(具有传递性)。
  3. 按上面规则没有判为同一颗星的星星,会被视为不同的星星出现在照片上。

需要注意:没有被选入拍摄区间的星星,不会出现在照片上,也不会参与“同一颗星”的合并判断。

请问,合理选择一个区间,照片上能够出现的最多不同星星的数量是多少?

给定 TT 组测试数据,请分别输出答案。

输入格式

输入按如下格式由标准输入给出。这里 casei\mathrm{case}_i 表示第 ii 个测试数据。

TT\\
case1\mathrm{case}_1\\
case2\mathrm{case}_2\\
⋮\vdots\\
caseT\mathrm{case}_T

每个测试数据的格式如下:

NN\\
X1X_1 A1A_1\\
X2X_2 A2A_2\\
⋮\vdots\\
XNX_N ANA_N

输出格式

请输出每组测试数据的答案。

输入输出样例

  • 输入#1

    3
    4
    0 1
    3 1
    6 5
    9 1
    6
    0 3
    1 1
    4 1
    6 1
    9 1
    10 3
    5
    10 5
    20 5
    30 5
    40 5
    50 5

    输出#1

    2
    3
    1

说明/提示

样例解释 1

下面举出第 11 个测试数据的两种拍摄方式。

  1. 选择坐标 00 到 55 的区间:星星 1,21, 2 会出现在照片上。∣X1−X2∣=3,A1+A2=2|X_1 - X_2| = 3, A_1 + A_2 = 2,所以星星 1,21, 2 会被分为不同的星星。
  2. 选择坐标 00 到 99 的区间:星星 1,2,3,41, 2, 3, 4 会出现在照片上。因为第一个规则,星星 1,31, 3,2,32, 3,3,43, 4 合并。由于规则的传递性,1,2,3,41, 2, 3, 4 都被归为同一颗星。

在此测试用例中,最多能拍到 22 颗不同的星星,其中一种方式是方法 1。如果按方法 2,全被当成 1 颗星,结果不是最优的。

第 22 个测试用例,最多能拍到 33 颗不同的星星,这种情况下可以选择坐标 11 到 99 的区间。

第 33 个测试用例,不管怎么选区间,所有的星星都会被归为 1 颗。

约束条件

  • T≥1T \geq 1
  • 1≤N≤200 0001 \leq N \leq 200\,000
  • 0≤X1<⋯<XN≤1080 \leq X_1 < \dots < X_N \leq 10^8
  • 1≤Ai≤1081 \leq A_i \leq 10^8
  • TT 组数据中,所有 NN 之和不超过 200 000200\,000
  • 所有输入均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页