CF2084E.Blossom
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的排列 a ∗,其中部分元素缺失(用 −1 表示)。
定义一个排列的值为其所有非空子段 ‡ 的 MEX † 之和。
求所有可能通过填充 a 中缺失元素形成的有效排列的值的总和,结果对 109+7 取模。
∗ 长度为 n 的排列是指由 0 到 n−1 的 n 个不同整数按任意顺序组成的数组。例如,[1,2,0,4,3] 是一个排列,但 [0,1,1] 不是排列(因为 1 在数组中出现了两次),[0,2,3] 也不是排列(因为 n=3 但数组中包含 3)。
† 整数集合 c={c1,c2,…,ck} 的最小排除值(MEX)定义为不包含在 c 中的最小非负整数 x。
‡ 序列 a 是序列 b 的子段,当且仅当 a 可以通过从 b 的开头和结尾删除若干(可能为零或全部)元素得到。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤1000)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤5000)。
第二行包含 n 个整数 a1,a2,…,an(−1≤ai<n)。
保证 a 中非 −1 的元素互不相同。
保证所有测试用例的 n 之和不超过 5000。
输出格式
对于每个测试用例,输出一个整数——所有可能有效排列的值的总和对 109+7 取模的结果。
输入输出样例
输入#1
5 2 0 -1 2 -1 -1 3 2 0 1 3 -1 2 -1 5 -1 0 -1 2 -1
输出#1
3 6 7 10 104
说明/提示
-
在第一个测试用例中,唯一有效的排列是 [0,1],其值为 3,因为:
mex([0])+mex([1])+mex([0,1])=1+0+2=3
因此答案为 3。
-
在第二个测试用例中,有两个有效排列:[0,1] 和 [1,0]。[0,1] 和 [1,0] 的值均为 3,因此答案为 3+3=6。
-
在第四个测试用例中,有两个有效排列:[0,2,1] 和 [1,2,0]。[0,2,1] 的值为 5,因为:
mex([0])+mex([2])+mex([1])+mex([0,2])+mex([2,1])+mex([0,2,1])=1+0+0+1+0+3=5
[1,2,0] 的值也为 5,因为:
mex([1])+mex([2])+mex([0])+mex([1,2])+mex([2,0])+mex([1,2,0])=0+0+1+0+1+3=5
因此答案为 5+5=10。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?