P15433 [蓝桥杯 2025 国 Python B] 灯塔

题目描述

在一片海岸线上,有 $n$ 个灯塔排成一排,从左到右编号为 $1$ 到 $n$。你需要点亮其中的一些灯塔以指引船只航行。给定一个长度为 $m$ 的点亮序列 $a_1, a_2, \dots, a_m$,其中第 $i$ 个操作表示尝试点亮编号为 $a_i$ 的灯塔。然而为了节约能源,如果灯塔 $a_i - 1$ 或灯塔 $a_i + 1$ 已经被点亮,则灯塔 $a_i$ 无法被点亮,该操作将被跳过。当然,同一个灯塔只会被点亮一次。 你可以从给定的点亮序列中挑选一个子序列(保持操作的相对顺序),按照子序列的顺序依次执行点亮操作。请问,最多能成功点亮多少个灯塔?

输入格式

输入的第一行包含两个正整数 $n, m$,用一个空格分隔。 第二行包含 $m$ 个正整数 $a_1, a_2, \dots, a_m$,相邻整数之间使用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。

说明/提示

### 样例说明 其中一种方案:保留子序列 $1, 3, 5, 9$,可以点亮四个灯塔。 ### 评测用例规模与约定 对于 $40\%$ 的评测用例,$1 \le n, m \le 5000$; 对于所有评测用例,$1 \le n, m \le 10^6$,$1 \le a_i \le n$。