上升点列

普及/提高- GESP六级 动态规划(DP)类 二维 DP + 排序优化

题目描述

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

你在自由添加 $k$ 个点后,还需要从 $n + k$ 个点中选出若干个整数点并组成一个序列,使得序列中任意相邻两点间的欧几里得距离恰好为 $1$ 而且横坐标、纵坐标值均单调不减,即 $x_{i+1} - x_i = 1, y_{i+1} = y_i$ 或 $y_{i+1} - y_i = 1, x_{i+1} = x_i$。请给出满足条件的序列的最大长度。

输入格式

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

接下来 $n$ 行,第 $i$ 行两个正整数 $x_i, y_i$ 表示给定的第 $i$ 个点的横纵坐标。

输出格式

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

数据范围

【样例 #3】

见附件中的 point/point3.inpoint/point3.ans

第三个样例满足 $k = 0$。

【样例 #4】

见附件中的 point/point4.inpoint/point4.ans

【数据范围】

保证对于所有数据满足:$1 \leq n \leq 500$,$0 \leq k \leq 100$。对于所有给定的整点,其横纵坐标 $1 \leq x_i, y_i \leq {10}^9$,且保证所有给定的点互不重合。对于自由添加的整点,其横纵坐标不受限制。

测试点编号 $n \leq$ $k \leq$ $x_i,y_i \leq$
$1 \sim 2$ $10$ $0$ $10$
$3 \sim 4$ $10$ $100$ $100$
$5 \sim 7$ $500$ $0$ $100$
$8 \sim 10$ $500$ $0$ ${10}^9$
$11 \sim 15$ $500$ $100$ $100$
$16 \sim 20$ $500$ $100$ ${10}^9$

样例输入 1

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

样例输出 1

8

样例输入 2

4 100
10 10
15 25
20 20
30 30

样例输出 2

103
时间限制: 1000ms
内存限制: 512MB
通过率: 0.0%
提交数: 0

设置

导航栏小工具

时钟
显示实时时钟(默认组件)
📝
代码粘贴板
快速创建和分享代码片段