CFCF2165B.Marble Council

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个多重集合 aa,包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n。你希望通过以下过程生成一个新的多重集合 ss

  • aa 拆分为任意数量的非空多重集合 x1,x2,,xkx_1,x_2,\ldots,x_k,使得 aa 中的每个元素恰好属于其中的一个多重集合。
  • 初始时 ss 为空。对于每个 xix_i,选择一个它的众数 ^* 并将其插入 ss 中。

请你计算可以通过上述过程生成的不同的多重集合 ss 的数量,结果对 998244353998\,244\,353 取模。

请注意,计算多重集合的不同数量时,只考虑集合的内容,不考虑顺序,但是每个元素的出现次数是重要的,即 {1,1,2}\{1,1,2\}{1,2}\{1,2\}{1,1,2,2}\{1,1,2,2\} 都视作不同的多重集合。

^* 多重集合的众数定义为出现次数最多的元素;如果有多个元素出现次数相同且为最大,则这些元素都视为众数。

输入格式

每个测试点包含多组数据。第一行包含一个整数 tt1t50001 \le t \le 5000),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n50001 \le n \le 5000),表示多重集合 aa 的大小。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n1ain1 \le a_i \le n)。

保证所有测试用例的 nn 之和不超过 50005000

输出格式

对于每个测试用例,输出一行一个整数,表示可以得到的不同多重集合的数量,对 998244353998\,244\,353 取模。

输入输出样例

  • 输入#1

    5
    3
    1 2 3
    3
    1 1 1
    3
    1 2 2
    10
    1 1 1 1 2 2 2 3 3 4
    10
    1 1 1 2 2 2 3 3 3 4

    输出#1

    7
    3
    4
    111
    126

说明/提示

在第一个测试用例中,$ {1,2,3} $ 的任意非空子集都可以被得到,共有 77 个多重集合。

在第三个测试用例中,可以得到 44 个不同的多重集合:

  • 把所有元素分在 {1,2,2}\{1,2,2\},得到 {2}\{2\}
  • 把元素分为 {1,2},{2}\{1,2\},\{2\},得到 {2,2}\{2,2\}
  • 把元素分为 {1},{2,2}\{1\},\{2,2\},得到 {1,2}\{1,2\}
  • 把元素分为 {1},{2},{2}\{1\},\{2\},\{2\},得到 {1,2,2}\{1,2,2\}

可以证明没有其它的多重集合能被得到。

首页