#6928. CSP-J 2022 上升点列(point) T4

CSP-J 2022 上升点列(point) T4

上升点列(point)

题目描述

在一个二维平面内,给定 n 个整数点 (xᵢ, yᵢ),此外你还可以自由添加 k 个整数点。

在自由添加 k 个点后,你需要从 n + k 个点中选出若干个整数点,并组成一个序列,使得:

  • 序列中任意相邻两点间的欧几里得距离恰好为 1;
  • 横坐标、纵坐标值均单调不减。

即序列中的任意相邻两点满足以下两种情况之一:

  • xᵢ₊₁ - xᵢ = 1,yᵢ₊₁ = yᵢ;
  • yᵢ₊₁ - yᵢ = 1,xᵢ₊₁ = xᵢ。

请给出满足条件的序列的最大长度。

输入格式

从文件 point.in 中读入数据。

第一行包含两个整数 n, k,分别表示给定的整点个数、可自由添加的整点个数。

接下来 n 行,第 i 行包含两个正整数 xᵢ, yᵢ,表示给定的第 i 个点的横坐标和纵坐标。

输出格式

输出到文件 point.out 中。

输出一个整数,表示满足要求的序列的最大长度。

样例 1

输入

8 2
3 1
3 2
3 3
3 6
1 2
2 2
5 5
5 3

输出

8

样例 2

输入

4 100
10 10
15 25
20 20
30 30

输出

103

样例 3

见选手目录下的 point/point3.in 与 point/point3.ans。

第三个样例满足 k = 0。

样例 4

见选手目录下的 point/point4.in 与 point/point4.ans。

数据范围

对于所有测试数据,保证:

  • 1 ≤ n ≤ 500;
  • 0 ≤ k ≤ 100;
  • 对于所有给定的整点,横纵坐标满足 1 ≤ xᵢ, yᵢ ≤ 10⁹;
  • 所有给定的点互不重合;
  • 对于自由添加的整点,其横纵坐标不受限制。
测试点编号 n ≤ k ≤ xᵢ, yᵢ ≤
1~2 10 0 10
3~4 100 100
5~7 500
8~10 10⁹
11~15 100 100
15~20(待核对) 10(待核对)