CF2064E.Mycraft Sand Sort

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

Steve 有一个排列 pp 和一个数组 cc,它们的长度均为 nn。Steve 希望对排列 pp 进行排序。

Steve 有无限多的彩色沙块,他用这些沙块发明了一种基于物理的排序方法,称为重力排序。具体来说,对 pp 进行重力排序的步骤如下:

  • 对于所有满足 1≤i≤n1 \le i \le n 的 ii,在所有 1≤j≤pi1 \le j \le p_i 的位置 (i,j)(i, j) 上放置一个颜色为 cic_i 的沙块。这里,位置 (x,y)(x, y) 表示从上往下第 xx 行、从左往右第 yy 列的格子。
  • 对整个数组施加向下的重力,使所有沙块尽可能下落。


这是第三个测试用例的重力排序示例。p=[4,2,3,1,5]p = [4, 2, 3, 1, 5],c=[2,1,4,1,5]c = [2, 1, 4, 1, 5]。
Alex 在 Steve 完成重力排序后观察沙块,想知道有多少对数组 (p′,c′)(p', c'),其中 p′p' 是一个排列,能够产生与当前相同的沙块布局。注意,原始的数组对 (p,c)(p, c) 总是会被计入答案。

请你帮 Alex 计算这个数量。由于答案可能很大,请对 998 244 353998\,244\,353 取模后输出。

∗^{\text{∗}} 长度为 nn 的排列是一个包含 11 到 nn 的 nn 个互不相同整数的数组。例如,[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)。

输入格式

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

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

接下来一行包含 nn 个互不相同的整数 p1,p2,…,pnp_1,p_2,\ldots,p_n(1≤pi≤n1 \le p_i \le n)——排列 pp 的元素。

接下来一行包含 nn 个整数 c1,c2,…,cnc_1,c_2,\ldots,c_n(1≤ci≤n1 \le c_i \le n)——数组 cc 的元素。

所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数,表示 Steve 可能开始的数组对 (p′,c′)(p', c') 的数量,对 998 244 353998\,244\,353 取模。

输入输出样例

  • 输入#1

    4
    1
    1
    1
    5
    5 3 4 1 2
    1 1 1 1 1
    5
    4 2 3 1 5
    2 1 4 1 5
    40
    29 15 20 35 37 31 27 1 32 36 38 25 22 8 16 7 3 28 11 12 23 4 14 9 39 13 10 30 6 2 24 17 19 5 34 18 33 26 40 21
    3 1 2 2 1 2 3 1 1 1 1 2 1 3 1 1 3 1 1 1 2 2 1 3 3 3 2 3 2 2 2 2 1 3 2 1 1 2 2 2

    输出#1

    1
    120
    1
    143654893

说明/提示

第二个测试用例如下图所示。


这是第二个测试用例的重力排序结果。可以证明,pp 的所有排列都会产生相同的结果,并且 cc 必须为 [1,1,1,1,1][1,1,1,1,1](因为所有沙块颜色必须相同),所以答案是 5!=1205! = 120。

第三个测试用例如题面所示。可以证明,没有其他数组 pp 和 cc 能产生相同的最终结果,所以答案是 11。

由 ChatGPT 4.1 翻译

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

首页