CFCF2154F2.Bombing (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的难度较高版本。此版本与其他版本的区别在于本题中 n106n \le 10^6。只有在你解决了该问题所有版本后,才能进行 Hack。

若满足 a=b|a| = |b| 并存在 kk,使得 1k<a1 \le k < |a|,并且 a1,a2,,aka_1,a_2,\ldots,a_kak+1,ak+2,,aaa_{k + 1},a_{k + 2},\ldots,a_{|a|} 都是 bb 的子序列 ^{\text{†}},则称排列 bb 是排列 aa 的一次 riffle shuffle。

例如,[1,4,5,2,3,6][\color{red}{1}, \color{blue}{4}, \color{blue}{5}, \color{red}{2}, \color{red}{3}, \color{blue}{6}][1,2,3,4,5,6][\color{red}{1}, \color{red}{2}, \color{red}{3}, \color{blue}{4}, \color{blue}{5}, \color{blue}{6}] 的一次 riffle shuffle,因为可以选 k=3k=3,且 [1,2,3][\color{red}{1}, \color{red}{2}, \color{red}{3}][4,5,6][\color{blue}{4}, \color{blue}{5}, \color{blue}{6}] 都是子序列。

你得到一个长度为 nn 的排列 pp,其中某些值被替换成了 1-1。请你计算将每个 1-1 替换为整数的方案数,使得 pp 变为 [1,2,,n][1,2,\ldots,n] (升序排列)的 riffle shuffle。

由于方案数可能非常大,请将结果对 998244353998\,244\,353 取模后输出。

^{\text{∗}} 长度为 nn 的排列是 11nnnn 个不同整数的任意排列。例如,[2,3,1,5,4][2,3,1,5,4] 是排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3,但出现了 44)。

^{\text{†}} 如果序列 cc 可以通过从序列 dd 中删除若干(可能为零或全部)任意位置的元素获得,则 ccdd 的子序列。

输入格式

每个测试点包含多组测试用例。第一行包含测试用例数 tt1t1041 \le t \le 10^4)。接下来是具体的测试用例。

每个测试用例的第一行包含一个整数 nn2n1062 \le n \le 10^6)——排列的长度。

每个测试用例的第二行包含 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n1pin1 \le p_i \le npi=1p_i = -1),表示排列 pp 的元素。其中非 1-1 的元素互不相同。

所有测试用例中 nn 的总和不超过 10610^6

输出格式

对于每个测试用例,输出填充 pp 使其成为 [1,2,,n][1,2,\ldots,n] 的 riffle shuffle 的方案数,对 998244353998\,244\,353 取模。

输入输出样例

  • 输入#1

    7
    5
    -1 -1 -1 -1 -1
    4
    1 2 3 4
    5
    -1 -1 -1 2 -1
    6
    -1 3 2 1 -1 -1
    18
    11 -1 2 -1 -1 -1 -1 6 -1 -1 14 8 9 15 -1 -1 -1 -1
    6
    -1 3 -1 4 -1 5
    3
    -1 2 1

    输出#1

    27
    1
    6
    0
    32
    0
    0

说明/提示

第三个测试用例的所有可行排列如下:

  • [1,3,4,2,5][\color{red}1, \color{blue}3, \color{blue}4, \color{red}2, \color{blue}5]
  • [1,4,5,2,3][\color{red}1, \color{blue}4, \color{blue}5, \color{red}2, \color{red}3]
  • [3,1,4,2,5][\color{blue}3, \color{red}1, \color{blue}4, \color{red}2, \color{blue}5]
  • [3,4,1,2,5][\color{blue}3, \color{blue}4, \color{red}1, \color{red}2, \color{blue}5]
  • [4,1,5,2,3][\color{blue}4, \color{red}1, \color{blue}5, \color{red}2, \color{red}3]
  • [4,5,1,2,3][\color{blue}4, \color{blue}5, \color{red}1, \color{red}2, \color{red}3]
首页