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$)。

nn 的总和不超过 3⋅1053\cdot 10^5。

输出格式

对于每个测试用例,输出数组 aa 的所有连续子段中所有好数组的数量。

输入输出样例

  • 输入#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

说明/提示

在第一个例子中,以下四个子段是好的:

  • 从第 11 个元素到第 11 个元素;
  • 从第 11 个元素到第 22 个元素;
  • 从第 22 个元素到第 22 个元素;
  • 从第 33 个元素到第 33 个元素。

在第二个例子中,唯一不好的子段是从第 33 个元素到第 44 个元素的子段。

By wangboyue。

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

首页