#P51104. 「2019 集训队互测 Day 5」简单计数

「2019 集训队互测 Day 5」简单计数

题目描述

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

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

  • 每个点有不超过 11 条出边

  • 每个点的入边条数在集合 SS

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

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

输入格式

第一行依次输入三个用空格分隔的正整数,nnkkS|S|

接下来第二行从小到大输入 S|S| 个空格分隔的不同非负整数,表示 SS 集合中的元素。

输出格式

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

样例 1

3 1 2
0 1
13

有如下13个符合题意的图,其中 aba \rightarrow b 表示一条从 aa 连向 bb 的有向边:

  1. 没有边
  2. 121 \rightarrow 2
  3. 212 \rightarrow 1
  4. 131 \rightarrow 3
  5. 313 \rightarrow 1
  6. 232 \rightarrow 3
  7. 323 \rightarrow 2
  8. 1231 \rightarrow 2 \rightarrow 3
  9. 1321 \rightarrow 3 \rightarrow 2
  10. 2132 \rightarrow 1 \rightarrow 3
  11. 2312 \rightarrow 3 \rightarrow 1
  12. 3123 \rightarrow 1 \rightarrow 2
  13. 3213 \rightarrow 2 \rightarrow 1
8 2 3
0 2 3
7497953
3000 2 3
0 1 3
500207304
876543210 233 4
0 1 2 3
467638557

数据范围与提示

对于所有数据,1n9×1081 \leq n \leq 9 \times 10^8​1k1071 \leq k \leq 10^7SS 集合非空,SS 集合中所有元素为 [0,3][0,3] 的非负整数。

数据共分为 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 分):无特殊限制。