#P13648. [NOISG 2016] Rock Climbing

[NOISG 2016] Rock Climbing

Description

在某一天,Panda 先生和猫咪 Rar 决定去攀岩。攀岩墙上有 NN 块岩石。第 ii 块岩石位于距离墙底 YiY_i 的高度,距离墙中心右侧 XiX_i 个单位的位置。如果 XiX_i 为负,则表示在中心左侧。所有岩石的位置都不相同。

为了考验 Panda 先生的攀岩技巧,猫咪 Rar 给他出了一个挑战。挑战内容如下:

  1. NN 块岩石中,猫咪 Rar 会选出 KK 块岩石组成一个集合 RR
  2. 为了赢得挑战,Panda 先生需要从集合 RR 中任选一对岩石 (A,B)(A, B)。Panda 先生可以自由选择任意一对岩石,只要 ABA \neq B 且两块岩石都在集合 RR 中。
  3. Panda 先生将从第一块岩石 (A)(A) 出发,尝试到达第二块岩石 (B)(B)。在从 AABB 的过程中,他可以经过其他岩石,无论这些岩石是否在集合 RR 中。
  4. 但是,每块岩石都有一个滑溜系数 SiS_i。滑溜系数越高,越难从这块岩石伸展到远处的岩石而不滑落。此外,猫咪 Rar 只允许他向上攀爬。更准确地说,从第 ii 块岩石移动到第 jj 块岩石,需要满足 max(XiXj,YiYj)max(Si,Sj)\max(|X_i - X_j|, |Y_i - Y_j|) \leq \max(S_i, S_j)Yi<YjY_i < Y_j
  5. 如果 Panda 先生能够选出一对岩石 (A,B)(A, B),使得他能从岩石 AA 到达岩石 BB,则他赢得挑战。如果无法做到,则挑战失败。

请参考样例输入输出以获取更多细节。

当然,Panda 先生知道有很多岩石对无法完成挑战。他想要找到最小的 KK,使得无论猫咪 Rar 如何选择岩石集合,他都能完成挑战。请你帮他找出这个值。

Input Format

你的程序需要从标准输入读取数据。第一行包含一个整数 NN。接下来的 NN 行,每行包含三个整数,分别为 Xi,Yi,SiX_i, Y_i, S_i,表示第 ii 块岩石的信息。

Output Format

你的程序需要输出一行,一个整数,表示使 Panda 先生总能完成挑战所需的最小岩石数。如果 Panda 先生永远无法完成挑战,输出 1-1

5
0 3 2
-1 5 1
4 4 3
-1 1 2
2 2 1
3
3
0 1 2000000
-1 2 2000000
1 2 2000000
3
2
0 1 1
0 5 1
-1

Hint

样例解释 1

K=2K = 2 时,存在某些岩石子集使 Panda 先生无法完成挑战。例如,如果猫咪 Rar 选择 (1,1)(-1, 1)(2,2)(2, 2) 这两块岩石组成集合 RR,Panda 先生无法完成挑战。Panda 先生无法从 (2,2)(2, 2) 移动到 (1,1)(-1, 1),因为只能向上攀爬。Panda 先生也无法直接从 (1,1)(-1, 1) 移动到 (2,2)(2, 2),因为 max(12,12)=3>max(2,1)=2\max(|-1 - 2|, |1 - 2|) = 3 > \max(2, 1) = 2

另一种选择是尝试间接从 (1,1)(-1, 1)(2,2)(2, 2)。Panda 先生可以从 (1,1)(-1, 1) 攀爬到 (0,3)(0, 3),因为 max(10,13)=2max(2,1)=2\max(|-1 - 0|, |1 - 3|) = 2 \leq \max(2, 1) = 2。但他无法从 (0,3)(0, 3) 移动到 (2,2)(2, 2),因为必须向上攀爬。

此外,可以验证,对于任意 3 块岩石的集合,总能找到一对岩石使 Panda 先生完成挑战。例如,如果猫咪 Rar 选择 (1,5)(-1, 5)(4,4)(4, 4)(1,1)(-1, 1) 这三块岩石组成集合 RR,Panda 先生可以选择 (1,5)(-1, 5)(1,1)(-1, 1) 这对岩石。完成挑战的方法是从 (1,1)(-1, 1) 攀爬到 (0,3)(0, 3),再到 (1,5)(-1, 5)。中间经过的岩石不需要在 RR 中。

样例解释 2

本测试点仅适用于子任务 1、2 和 5。

如果猫咪 Rar 选择高度为 2 的两块岩石(即第 2 和第 3 块岩石),Panda 先生无法完成挑战,因为他只能向上攀爬。因此,只有当猫咪 Rar 选择所有岩石时,Panda 先生才能保证完成挑战。

样例解释 3

本测试点仅适用于子任务 2、3、4 和 5。

即使猫咪 Rar 选择了所有岩石,Panda 先生也无法从一块岩石到达另一块岩石。因此,Panda 先生永远无法完成挑战。

子任务

每个测试点的最大运行时间为 1.0 秒。你的程序将在以下输入范围内进行测试:

子任务 分值 NN 其他限制
1 15 1N201 \leq N \leq 20 所有 Si=2×106S_i = 2 \times 10^6
2 29 无其他限制
3 17 1N5001 \leq N \leq 500 所有 Xi=0X_i = 0,且所有 SiS_i 相等
4 19 所有 Si=1S_i = 1,且所有 YiY_i 不是 3 的倍数
5 20 无其他限制

对于所有测试点,106Xi106-10^6 \leq X_i \leq 10^61Y1061 \leq Y \leq 10^61Si2×1061 \leq S_i \leq 2 \times 10^6

由 ChatGPT 4.1 翻译