CF2064E.Mycraft Sand Sort
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Steve 有一个排列 p 和一个数组 c,它们的长度均为 n。Steve 希望对排列 p 进行排序。
Steve 有无限多的彩色沙块,他用这些沙块发明了一种基于物理的排序方法,称为重力排序。具体来说,对 p 进行重力排序的步骤如下:
- 对于所有满足 1≤i≤n 的 i,在所有 1≤j≤pi 的位置 (i,j) 上放置一个颜色为 ci 的沙块。这里,位置 (x,y) 表示从上往下第 x 行、从左往右第 y 列的格子。
- 对整个数组施加向下的重力,使所有沙块尽可能下落。

这是第三个测试用例的重力排序示例。p=[4,2,3,1,5],c=[2,1,4,1,5]。
Alex 在 Steve 完成重力排序后观察沙块,想知道有多少对数组 (p′,c′),其中 p′ 是一个排列,能够产生与当前相同的沙块布局。注意,原始的数组对 (p,c) 总是会被计入答案。
请你帮 Alex 计算这个数量。由于答案可能很大,请对 998244353 取模后输出。
∗ 长度为 n 的排列是一个包含 1 到 n 的 n 个互不相同整数的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是(2 出现了两次),[1,3,4] 也不是(n=3,但出现了 4)。
输入格式
第一行包含一个整数 t(1≤t≤104)——表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)——数组的长度。
接下来一行包含 n 个互不相同的整数 p1,p2,…,pn(1≤pi≤n)——排列 p 的元素。
接下来一行包含 n 个整数 c1,c2,…,cn(1≤ci≤n)——数组 c 的元素。
所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数,表示 Steve 可能开始的数组对 (p′,c′) 的数量,对 998244353 取模。
输入输出样例
输入#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
说明/提示
第二个测试用例如下图所示。

这是第二个测试用例的重力排序结果。可以证明,p 的所有排列都会产生相同的结果,并且 c 必须为 [1,1,1,1,1](因为所有沙块颜色必须相同),所以答案是 5!=120。
第三个测试用例如题面所示。可以证明,没有其他数组 p 和 c 能产生相同的最终结果,所以答案是 1。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?