CF2011F.Good Subarray
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个大小为 $ n $ 的整数数组 $ a $。
我们称一个数组为好数组,当且仅当它可以通过以下步骤获得:创建一个只包含任意单个整数的数组;然后执行以下操作若干次:从已存在的数组中选择一个元素(称为 $ x $),并将 $ x 、 (x-1) $ 或 $ (x+1) $ 添加到数组的末尾。
例如,数组 $ [1, 2, 1] 、 [5] $ 和 $ [3, 2, 1, 4] $ 是好的,而 $ [2, 4] $ 和 $ [3, 1, 2] $ 不是。
你的任务是计算数组 $ a $ 的所有连续子段中所有好数组的数量。元素相同但在数组 $ a $ 中不同位置的两个子段被视为不同。
输入格式
第一行包含数据组数 $ t ( 1 \le t \le 10^4 $)。
每组测试的第一行包含一个整数 $ n ( 1 \le n \le 3 \cdot 10^5 $)。
第二行包含 $ n $ 个整数 $ a_1, a_2, \dots, a_n ( 1\le a_i\le n$)。
n 的总和不超过 3⋅105。
输出格式
对于每个测试用例,输出数组 a 的所有连续子段中所有好数组的数量。
输入输出样例
输入#1
4 3 1 1 3 4 3 2 3 1 1 1 8 4 5 6 5 3 2 3 1
输出#1
4 9 1 23
说明/提示
在第一个例子中,以下四个子段是好的:
- 从第 1 个元素到第 1 个元素;
- 从第 1 个元素到第 2 个元素;
- 从第 2 个元素到第 2 个元素;
- 从第 3 个元素到第 3 个元素。
在第二个例子中,唯一不好的子段是从第 3 个元素到第 4 个元素的子段。
By wangboyue。
输入解题思路,AI测评打分。不知道怎么写?