CF1613D.MEX Sequences

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Let's call a sequence of integers x1,x2,…,xkx_1, x_2, \dots, x_k MEX-correct if for all ii (1≤i≤k1 \le i \le k) ∣xi−MEX⁡(x1,x2,…,xi)∣≤1|x_i - \operatorname{MEX}(x_1, x_2, \dots, x_i)| \le 1 holds. Where MEX⁡(x1,…,xk)\operatorname{MEX}(x_1, \dots, x_k) is the minimum non-negative integer that doesn't belong to the set x1,…,xkx_1, \dots, x_k. For example, MEX⁡(1,0,1,3)=2\operatorname{MEX}(1, 0, 1, 3) = 2 and MEX⁡(2,1,5)=0\operatorname{MEX}(2, 1, 5) = 0.

You are given an array aa consisting of nn non-negative integers. Calculate the number of non-empty MEX-correct subsequences of a given array. The number of subsequences can be very large, so print it modulo 998244353998244353.

Note: a subsequence of an array aa is a sequence [ai1,ai2,…,aim][a_{i_1}, a_{i_2}, \dots, a_{i_m}] meeting the constraints 1≤i1<i2<⋯<im≤n1 \le i_1 \lt i_2 \lt \dots \lt i_m \le n. If two different ways to choose the sequence of indices [i1,i2,…,im][i_1, i_2, \dots, i_m] yield the same subsequence, the resulting subsequence should be counted twice (i. e. two subsequences are different if their sequences of indices [i1,i2,…,im][i_1, i_2, \dots, i_m] are not the same).

我们称一个整数序列 x1,x2,…,xkx_1, x_2, \dots, x_k 是 MEX-正确 的,当且仅当对所有 ii(1≤i≤k1 \le i \le k)均满足

∣xi−MEX⁡(x1,x2,…,xi)∣≤1.|x_i - \operatorname{MEX}(x_1, x_2, \dots, x_i)| \le 1.

其中 MEX⁡(x1,…,xk)\operatorname{MEX}(x_1, \dots, x_k) 表示不属于集合 {x1,…,xk}\{x_1, \dots, x_k\} 的最小非负整数。例如,MEX⁡(1,0,1,3)=2\operatorname{MEX}(1, 0, 1, 3) = 2,而 MEX⁡(2,1,5)=0\operatorname{MEX}(2, 1, 5) = 0。

给定一个由 nn 个非负整数组成的数组 aa。请计算该数组中非空 MEX-正确子序列的个数。由于子序列个数可能非常大,请将结果对 998244353998244353 取模后输出。

注意:数组 aa 的一个子序列是指满足 1≤i1<i2<⋯<im≤n1 \le i_1 < i_2 < \dots < i_m \le n 的序列 [ai1,ai2,…,aim][a_{i_1}, a_{i_2}, \dots, a_{i_m}]。若两种不同的下标选择方式 [i1,i2,…,im][i_1, i_2, \dots, i_m] 得到相同的元素序列,则该子序列仍应被计为两个不同的子序列(即:只要下标序列 [i1,i2,…,im][i_1, i_2, \dots, i_m] 不同,就视为不同的子序列)。

输入格式

The first line contains a single integer tt (1≤t≤1051 \le t \le 10^5) — the number of test cases.

The first line of each test case contains a single integer nn (1≤n≤5⋅1051 \le n \le 5 \cdot 10^5).

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤n0 \le a_i \le n).

The sum of nn over all test cases doesn't exceed 5⋅1055 \cdot 10^5.

第一行包含一个整数 tt(1≤t≤1051 \le t \le 10^5)—— 表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤5⋅1051 \le n \le 5 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(0≤ai≤n0 \le a_i \le n)。

所有测试用例的 nn 值之和不超过 5⋅1055 \cdot 10^5。

输出格式

For each test case, print a single integer — the number of non-empty MEX-correct subsequences of a given array, taken modulo 998244353998244353.

对于每个测试用例,输出一个整数——给定数组中非空 MEX-正确子序列的个数,对 998244353998244353 取模。

输入输出样例

  • 输入#1

    4
    3
    0 2 1
    2
    1 0
    5
    0 0 0 0 0
    4
    0 1 2 3

    输出#1

    4
    2
    31
    7

说明/提示

In the first example, the valid subsequences are [0][0], [1][1], [0,1][0,1] and [0,2][0,2].

In the second example, the valid subsequences are [0][0] and [1][1].

In the third example, any non-empty subsequence is valid.

在第一个例子中,有效的子序列有 [0][0]、[1][1]、[0,1][0,1] 和 [0,2][0,2]。

在第二个例子中,有效的子序列有 [0][0] 和 [1][1]。

在第三个例子中,任意非空子序列均有效。

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

首页