#6566. 新视频游戏 (Нова видео-игра)

新视频游戏 (Нова видео-игра)

题目名称:新视频游戏 (Нова видео-игра)

题目背景

梅隆软件公司正在开发一款视频游戏,共有 NN 个关卡。每个开发人员负责一个关卡,并为该关卡设定了难度分值(范围从 11KK)。 客户要求游戏关卡必须按难度非递减(即 TiTi+1T_i \le T_{i+1})的顺序排列。

核心规则

  1. 现有状态:关卡的原始顺序已经确定,不能随意交换位置。
  2. 唯一操作:团队负责人可以执行且仅能执行一次区间翻转操作——选择一个起始位置和结束位置,将该区间内的关卡顺序完全反转。
  3. 最终步骤:翻转(可选)之后,系统会运行一个算法,通过删除最少数量的关卡,使得剩下的关卡难度呈非递减排列。这等价于求翻转后序列的最长不下降子序列 (LNSS) 的长度。

任务

求在最优地选择翻转区间后,游戏最多能保留多少个关卡。

输入格式

  • 第一行:两个整数 NN(关卡数,1N5001 \le N \le 500)和 KK(最大难度,1K5001 \le K \le 500)。
  • 第二行:NN 个整数 TiT_i(每个关卡的难度,1TiK1 \le T_i \le K)。

输出格式

  • 输出一个整数,代表经过一次最优翻转后,最长不下降子序列的最大长度。

数据范围与限制

  • 20% 数据K=2K = 2
  • 30% 数据:不需要翻转(即原序列的 LNSS 长度即为最优)。
  • 时间限制:150 毫秒(非常严格)。
  • 内存限制:64 兆字节。

样例分析

输入:

6 6
1 3 4 3 2 6

过程:

  1. 原始序列:1 3 4 3 2 6,LNSS 长度为 4(如 1 3 3 6)。
  2. 选择翻转区间 [2, 5](即元素 3 4 3 2),序列变为:1 2 3 4 3 6
  3. 此时 LNSS 长度为 5(1 2 3 4 61 2 3 3 6)。 输出:
5