QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 1024 MB Points totaux : 100

#14055. 拆分

Statistiques

对于由数字 $1, 2, 3, \dots, n$ 组成的排列 $p = p[0] p[1] p[2] \dots p[n - 1]$,我们定义一个分裂(split)为可以通过以下过程得到的排列 $q$:

  1. 选择两个数字集合 $A = \{ i_1, i_2, \dots, i_k \}$ 和 $B = \{ j_1, j_2, \dots, j_l \}$,满足 $A \cap B = \emptyset$,$A \cup B = \{ 0, 1, 2, \dots, n - 1 \}$,$i_1 < i_2 < \dots < i_k$ 且 $j_1 < j_2 < \dots < j_l$。
  2. 排列 $q$ 将为 $q = p[i_1]p[i_2]\dots p[i_k]p[j_1]p[j_2]\dots p[j_l]$。

此外,我们定义 $S(p)$ 为排列 $p$ 的所有分裂组成的集合。

给你一个数字 $n$ 和一个由 $m$ 个长度为 $n$ 的排列组成的集合 $T$。统计有多少个长度为 $n$ 的排列 $p$ 满足 $T \subseteq S(p)$。由于这个数量可能很大,请输出它模 $998\,244\,353$ 的值。

实现细节

你需要实现以下函数:

int solve(int n, int m, std::vector<std::vector<int>>& splits);
  • n:排列的大小。
  • m:分裂的数量。
  • splits:包含 $m$ 个两两不同的排列的数组,即集合 $T$ 的元素,它是 $S(p)$ 的子集。
  • 该函数应返回可能排列的数量模 $998\,244\,353$ 的值。
  • 对于每个测试用例,该函数恰好被调用一次。

数据范围

  • $1 \le n \le 300$
  • $1 \le m \le 300$

子任务

  1. (6 分) $m = 1$
  2. (7 分) $1 \le n, m \le 10$
  3. (17 分) $1 \le n, m \le 18$
  4. (17 分) $1 \le n \le 30, 1 \le m \le 15$
  5. (16 分) $1 \le n, m \le 90$
  6. (16 分) $1 \le n \le 300, 1 \le m \le 15$
  7. (21 分) 无附加限制。

样例

样例 1

考虑以下调用:

solve(3, 2, {{1, 2, 3}, {2, 1, 3}})

在这个样例中,排列 $p$ 的大小为 $3$,我们得到了 $2$ 个分裂:

  • 1 2 3
  • 2 1 3

函数调用将返回 $4$,因为只有四个排列 $p$ 可以生成这两个分裂:

  • 1 2 3
  • 1 3 2
  • 2 1 3
  • 2 3 1

评测程序示例

评测程序示例按以下格式读取输入:

  • 第 1 行:$n \ m$
  • 第 $2 + i$ 行:对于所有 $0 \le i < m$,为 $s[i][0] \ s[i][1] \ \dots \ s[i][n - 1]$

并输出调用 solve 伴随相应参数的结果。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.