CF1569C.Jury Meeting

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

nn people gathered to hold a jury meeting of the upcoming competition, the ii-th member of the jury came up with aia_i tasks, which they want to share with each other.

First, the jury decides on the order which they will follow while describing the tasks. Let that be a permutation pp of numbers from 11 to nn (an array of size nn where each integer from 11 to nn occurs exactly once).

Then the discussion goes as follows:

  • If a jury member p1p_1 has some tasks left to tell, then they tell one task to others. Otherwise, they are skipped.
  • If a jury member p2p_2 has some tasks left to tell, then they tell one task to others. Otherwise, they are skipped.
  • ...
  • If a jury member pnp_n has some tasks left to tell, then they tell one task to others. Otherwise, they are skipped.
  • If there are still members with tasks left, then the process repeats from the start. Otherwise, the discussion ends.

A permutation pp is nice if none of the jury members tell two or more of their own tasks in a row.

Count the number of nice permutations. The answer may be really large, so print it modulo 998 244 353998\,244\,353.

有 nn 人聚集在一起,为即将到来的比赛召开评委会会议。其中第 ii 位评委会成员提出了 aia_i 道题目,希望与其他成员分享。

首先,评委会决定描述题目的顺序。设该顺序为 11 到 nn 的一个排列 pp(即一个长度为 nn 的数组,其中 11 到 nn 的每个整数恰好出现一次)。

随后讨论按如下方式进行:

  • 若评委会成员 p1p_1 还有未讲述的题目,则其向其他人讲述一道题目;否则跳过。
  • 若评委会成员 p2p_2 还有未讲述的题目,则其向其他人讲述一道题目;否则跳过。
  • …
  • 若评委会成员 pnp_n 还有未讲述的题目,则其向其他人讲述一道题目;否则跳过。
  • 若仍有成员尚有题目未讲述,则流程从头开始重复;否则讨论结束。

若排列 pp 满足:在上述整个讨论过程中,没有任何一位评委会成员连续讲述两道或更多道自己提出的题目,则称该排列 pp 是“好的”(nice)。

请计算“好的”排列的个数。答案可能非常大,请对 998 244 353998\,244\,353 取模后输出。

输入格式

The first line contains a single integer tt (1≤t≤1041 \le t \le 10^4) — the number of test cases.

The first line of the test case contains a single integer nn (2≤n≤2⋅1052 \le n \le 2 \cdot 10^5) — number of jury members.

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤1091 \le a_i \le 10^9) — the number of problems that the ii-th member of the jury came up with.

The sum of nn over all test cases does not exceed 2⋅1052 \cdot 10^5.

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

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)—— 评审团成员的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091 \le a_i \le 10^9)—— 第 ii 位评审团成员提出的题目数量。

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

输出格式

For each test case, print one integer — the number of nice permutations, taken modulo 998 244 353998\,244\,353.

对于每个测试用例,输出一个整数——“好”排列的数量对 998 244 353998\,244\,353 取模的结果。

输入输出样例

  • 输入#1

    4
    2
    1 2
    3
    5 5 5
    4
    1 3 3 7
    6
    3 4 2 1 3 3

    输出#1

    1
    6
    0
    540

说明/提示

Explanation of the first test case from the example:

There are two possible permutations, p=[1,2]p = [1, 2] and p=[2,1]p = [2, 1]. For p=[1,2]p = [1, 2], the process is the following:

  1. the first jury member tells a task;
  2. the second jury member tells a task;
  3. the first jury member doesn't have any tasks left to tell, so they are skipped;
  4. the second jury member tells a task.

So, the second jury member has told two tasks in a row (in succession), so the permutation is not nice.

For p=[2,1]p = [2, 1], the process is the following:

  1. the second jury member tells a task;
  2. the first jury member tells a task;
  3. the second jury member tells a task.

So, this permutation is nice.

示例中第一个测试用例的解释:

共有两种可能的排列:p=[1,2]p = [1, 2] 和 p=[2,1]p = [2, 1]。对于 p=[1,2]p = [1, 2],过程如下:

  1. 第一位评委讲述一道题目;
  2. 第二位评委讲述一道题目;
  3. 第一位评委已无剩余题目可讲,因此被跳过;
  4. 第二位评委再次讲述一道题目。

因此,第二位评委连续(连续地)讲述了两道题目,该排列不是“优美的”。

对于 p=[2,1]p = [2, 1],过程如下:

  1. 第二位评委讲述一道题目;
  2. 第一位评委讲述一道题目;
  3. 第二位评委再次讲述一道题目。

因此,该排列是“优美的”。

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

首页