CF2208E.Counting Cute Arrays
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定长度为 n 的正整数数组 [A1,A2,…,An],定义数组 f(A) 如下:
对于每个 i 从 1 到 n:
- 如果存在 j<i 满足 Aj<Ai,则 f(A)i=j<i,Aj<Aimaxj,即 f(A)i 是位于 i 前且值严格小于 Ai 的最右边元素的下标。
- 否则,f(A)i=0。
我们称非负整数数组 [P1,P2,…,Pn] 是一个“cute array”,如果存在数组 A 使得 f(A)=P。
现在给定一个长度为 n 的数组 X,其中 −1≤Xi≤n 对所有 i 都成立。统计将 X 中的 −1 替换为 0 到 n 之间的整数后,形成的“cute array” X′ 的个数。由于答案可能很大,请对 998244353 取模输出。
输入格式
每组测试数据包含多个测试用例。第一行包含整数 t(1≤t≤103),表示测试用例数量。
每组测试用例第一行包含一个整数 n(1≤n≤5000),表示 X 的长度。
第二行包含 n 个整数 X1,X2,…,Xn(−1≤Xi≤n)。
保证所有测试用例中 n 的总和不超过 5000。
输出格式
对于每个测试用例,输出一个整数,表示满足条件的“cute array” X′ 的数量,对 998244353 取模。
输入输出样例
输入#1
6 3 -1 0 -1 4 -1 -1 1 -1 5 -1 -1 -1 -1 -1 4 -1 0 2 3 4 1 1 2 3 4 0 0 0 1
输出#1
2 3 42 1 0 0
说明/提示
对于第一个测试用例,在所有可能的 X′ 中,只有 [0,0,0] 和 [0,0,2] 是“cute array”。
[0,0,0] 是一个“cute array”,因为 f([1,1,1])=[0,0,0],[0,0,2] 也是一个好数组,因为 f([1,1,2])=[0,0,2]。
对于第二个测试用例,只有 [0,1,1,0]、[0,1,1,1] 和 [0,1,1,3] 是“cute array”。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?