CF2114C.Need More Arrays

入门

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个数组 $ a $ 包含 $ n $ 个整数。数组按非递减顺序排序,即对于所有 $ 1 \le i < n $,满足 $ a_i \le a_{i + 1} $。

你可以从数组中移除任意数量的元素(包括不移除任何元素),且不移除的元素顺序保持不变。移除元素后,将按照以下规则生成新数组:

  • $ a_1 $ 被写入一个新数组;
  • 如果 $ a_1 + 1 < a_2 $,则 $ a_2 $ 被写入一个新数组;否则,$ a_2 $ 被写入与 $ a_1 $ 相同的数组;
  • 如果 $ a_2 + 1 < a_3 $,则 $ a_3 $ 被写入一个新数组;否则,$ a_3 $ 被写入与 $ a_2 $ 相同的数组;
  • $ \cdots $

例如,如果 $ a=[1, 2, 4, 6] $,则:

  • $ a_1 = 1 $ 被写入一个新数组,生成数组:$ [1] $;
  • $ a_1 + 1 = 2 $,因此 $ a_2 = 2 $ 被添加到现有数组,生成数组:$ [1, 2] $;
  • $ a_2 + 1 = 3 $,因此 $ a_3 = 4 $ 被写入一个新数组,生成数组:$ [1, 2] $ 和 $ [4] $;
  • $ a_3 + 1 = 5 $,因此 $ a_4 = 6 $ 被写入一个新数组,生成数组:$ [1, 2] 、、 [4] $ 和 $ [6] $。

你的任务是通过移除元素,使得上述算法生成的数组数量尽可能多。如果移除所有元素,则不会生成任何新数组。

输入格式

第一行输入包含一个整数 $ t (( 1 \le t \le 10^4 $)——测试用例的数量。

每个测试用例的第一行包含一个整数 $ n (( 1 \le n \le 2 \cdot 10^5 $)——数组的长度。

每个测试用例的第二行包含 $ n $ 个整数 $ a_1, a_2, \dots, a_n (( 1 \le a_i \le 10^6 ,, a_i \le a_{i + 1} $)——数组的元素。

保证所有测试用例的 $ n $ 之和不超过 $ 2 \cdot 10^5 $。

输出格式

对于每个测试用例,输出一个整数——通过移除任意(可能为零)数量的元素后,可以获得的数组的最大数量。

输入输出样例

  • 输入#1

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

    输出#1

    3
    2
    2
    1
    3
    1

说明/提示

在第一个例子中,你可以移除 $ a_3 $ 和 $ a_5 $,得到 $ a=[1, 2, 4, 6] $,生成数组的过程如题目描述所示。

在第二个例子中,你需要移除 $ a_2 $,得到 $ a = [1, 3] $,然后生成数组 $ [1] $ 和 $ [3] $。

在第三个例子中,不需要移除任何元素;对于 $ a = [1, 2, 2, 4] $,将生成数组 $ [1, 2, 2] $ 和 $ [4] $。

输入解题思路,AI测评打分。不知道怎么写?

首页