#L2543. 「JXOI2018」排序问题

    ID: 5973 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>贪心其他构造数论概率与期望数学传统2018JOXI

「JXOI2018」排序问题

题目描述

九条可怜是一个热爱思考的女孩子。

九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort !

Gobo sort 的算法描述大致如下:

假设我们要对一个大小为 nn 的数列 aa 排序。
等概率随机生成一个大小为 nn 的排列 pp
构造一个大小为 nn 的数列 bb 满足 bi=apib_i=a_{p_i} ,检查 bb 是否有序,如果 bb 已经有序了就结束算法,并返回 bb ,不然返回步骤 22
显然这个算法的期望时间复杂度是 O(n×n!)O(n\times n!) 的,但是九条可怜惊奇的发现,利用量子的神奇性质,在量子系统中,可以把这个算法的时间复杂度优化到线性。

九条可怜对这个排序算法进行了进一步研究,她发现如果一个序列满足一些性质,那么 Gobo sort 会很快计算出正确的结果。为了量化这个速度,她定义 Gobo sort 的执行轮数是步骤 22 的执行次数。

于是她就想到了这么一个问题:

现在有一个长度为 nn 的序列 xx ,九条可怜会在这个序列后面加入 mm 个元素,每个元素是 [l,r][l,r] 内的正整数。 她希望新的长度为 n+mn+m 的序列执行 Gobo sort 的期望执行轮数尽量的多。她希望得到这个最多的期望轮数。

九条可怜很聪明,她很快就算出了答案,她希望和你核对一下,由于这个期望轮数实在是太大了,于是她只要求你输出对 998244353998244353 取模的结果。

输入格式

第一行输入一个整数 TT,表示数据组数。
接下来 2×T2 \times T 行描述了 TT 组数据。
每组数据分成两行,第 11 行有四个正整数 n,m,l,rn,m,l,r ,表示数列的长度和加入数字的个数和加入数字的范围。
22 行有 nn 个正整数,第 ii 个表示 xix_i

输出格式

输出 TT 个整数,表示答案。

样例

输入
22
33 33 11 22
11 33 44
33 33 55 77
11 33 44

输出
180180
720720

对于第一组数据,我们可以添加 {1,2,2}\{1,2,2\} 到序列的最末尾,使得这个序列变成 11 33 44 11 22 22 ,那么进行一轮的成功概率是 1180\frac{1}{180} ,因此期望需要 180180 轮。

对于第二组数据,我们可以添加 {5,6,7}\{5,6,7\} 到序列的最末尾,使得这个序列变成 11 33 44 55 66 77 ,那么进行一轮的成功概率是 1720\frac{1}{720} ,因此期望需要 720720 轮。

大样例见附加文件。

数据范围与提示

对于 30%30\% 的数据, T10T\leq 10n,m,l,r8n,m,l,r\leq 8
对于 50%50\% 的数据, T300T\leq 300n,m,l,r,ai300n,m,l,r,a_i\leq 300
对于 60%60\% 的数据, rl+1107\sum{r-l+1}\leq 10^7
对于 70%70\% 的数据, n2×105\sum{n} \leq 2\times 10^5
对于 90%90\% 的数据, m2×105m\leq 2\times 10^5
对于 100%100\% 的数据, T105T\leq 10^5n2×105n\leq 2\times 10^5m107m\leq 10^71lr1091\leq l\leq r\leq 10^9
对于 100%100\% 的数据, 1ai1091\leq a_i\leq 10^9n2×106\sum{n}\leq 2\times 10^6