#P6132. [集训队互测 2019] 简单计数

    ID: 5046 远端评测题 7000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>数论数学2019WC/CTSC/集训队O2优化矩阵加速矩阵优化组合数学生成函数快速傅里叶变换,FFT

[集训队互测 2019] 简单计数

题目背景

警告,滥用本题者将被封号。

CauchySheep\mathsf C \color{red}\mathsf{auchySheep} 近期优化了他的 快速数论变换 (NTT) 模板的常数,现在他能在 0.1s0.1\text s 内轻松跑过 n=109n=10^9 了,所以他准备用下面的这个简单计数题也考验一下你的常数优化水平。

题目描述

传说,在很久很久以前,有一张 nn​ 个点的带标号有向无环图。每条边有一个颜色,为 kk 种不同颜色中的一种。这张图满足如下性质:

  • 每个点有不超过 11 条出边
  • 每个点的入边条数在集合 SS

由于某种原因,你想知道这样的图的个数。由于这样的图可能很多,你只要输出答案对 998244353998244353​ 取模的值。

两个图不同当且仅当存在一条从某个点 aa 到某个点 bb 的有向边,它只在恰好一个图中出现,或在两个图中都出现但颜色不同。

输入格式

第一行输入三个正整数 n,k,Sn, k, |S|
第二行从小到大输入 S|S| 个不同的非负整数,表示 SS 集合中的元素。

输出格式

输出一行一个 [0,998244352][0,998244352] 的整数,表示符合题意的图的个数对 998244353998244353​ 取模的值。

3 1 2
0 1
13
8 2 3
0 2 3
7497953
3000 2 3
0 1 3
500207304
10000000 3 2
0 3
238588124
876543210 233 4
0 1 2 3
467638557

提示

【样例一解释】
有如下 1313 个符合题意的图,其中 aba \to b 表示一条从 aa 连向 bb 的有向边:

  1. 没有边
  2. 121 \to 2
  3. 212 \to 1
  4. 131 \to3
  5. 313 \to 1
  6. 232 \to 3
  7. 323 \to 2
  8. 1231 \to 2 \to 3
  9. 1321 \to 3 \to 2
  10. 2132 \to 1 \to 3
  11. 2312 \to 3 \to 1
  12. 3123 \to 1 \to 2
  13. 3213 \to 2 \to 1

【数据范围】
数据共分为 77 个子任务。

  • 子任务 1155 分):n8n \leq 8
  • 子任务 221010 分):n5000n \leq 5000
  • 子任务 333030 分):n105n \leq 10^5
  • 子任务 442020 分):n107n \leq 10^7
  • 子任务 551515 分):n108n \leq 10^8
  • 子任务 661010 分):S={0,1}S=\{0,1\}
  • 子任务 771010 分):无特殊限制。

对于 100%100\% 的数据,1n9×1081 \le n \le 9 \times 10^8​1k1071 \le k \le 10^7SS \neq \varnothingS{0,1,2,3}S \subseteq \{0,1,2,3\}

By:fjzzq2002
来源:2019 年集训队互测 Day5