CF2124F1.Appending Permutations (Easy Version)

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的简单版本。不同版本的区别在于本版本中 n≤100n \leq 100。只有在你解决了所有版本后才能进行 hack。

你有一个初始为空的数组 aa。你可以任意多次执行以下操作:

  • 选择一个整数 s≥1s \ge 1,并将数组 [1,2,…,s][1, 2, \ldots, s] 的一个循环移位追加到 aa 的末尾。具体来说,选择整数 ss 和 rr,满足 1≤r≤s1 \le r \le s,然后将数组

    [r,r+1,…,s,1,2,…,r−1][r, r+1, \ldots, s, 1, 2, \ldots, r-1]

    追加到 aa 的末尾。

你还会得到一个整数 nn 和 mm 个限制条件,每个限制条件形如 ai≠xa_i \ne x。也就是说,对于每个限制条件,最终数组的第 ii 个位置上的值不能等于 xx。

你的任务是统计,使用允许的操作并满足所有限制条件后,能构造出多少个长度恰好为 nn 的不同数组。只要在 11 到 nn 的任意一个位置上不同,就认为两个数组不同。

请输出答案对 998 244 353998\,244\,353 取模。

输入格式

每组测试数据包含多个测试用例。第一行包含测试用例数 tt(1≤t≤1001 \le t \le 100)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n≤100,0≤m≤min⁡(5000,n2)1 \leq n \leq 100, 0 \leq m \leq \min(5000, n^2)),表示数组 aa 的长度和限制条件的数量。

接下来的 mm 行,每行包含两个整数 ii 和 xx(1≤i,x≤n1 \leq i,x \leq n),表示最终数组的第 ii 个位置不能等于 xx。保证没有重复的限制条件。

保证所有测试用例中 nn 的总和不超过 100100,所有测试用例中 mm 的总和不超过 50005000。

输出格式

对于每个测试用例,输出满足条件的数组数量,对 998 244 353998\,244\,353 取模。

输入输出样例

  • 输入#1

    7
    3 0
    3 3
    1 1
    2 1
    3 1
    3 2
    1 1
    2 1
    6 2
    2 3
    4 2
    2 3
    1 2
    2 2
    1 1
    4 3
    2 2
    3 2
    4 2
    3 2
    2 3
    3 3

    输出#1

    7
    0
    1
    65
    0
    4
    5
  • 输入#2

    1
    100 1
    69 69

    输出#2

    381055417

说明/提示

在第一个测试用例中,一共可以得到 77 个数组:[1,2,3],[2,3,1],[3,1,2],[1,1,2],[1,2,1],[2,1,1],[1,1,1][1,2,3], [2,3,1], [3,1,2], [1,1,2], [1,2,1], [2,1,1], [1,1,1]。

在第二个测试用例中,上述 77 个数组都不合法,因为所有元素都不能为 11,而所有数组中至少有一个 11。

在第三个测试用例中,只有 [2,3,1][2,3,1] 被计入。

由 ChatGPT 4.1 翻译

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

首页