题目 20221

子序列计数

查看题解 ↗GitHub ↗如何评测
题号
20221
标签
比赛NOIP
来源
炼石计划NOIP模拟赛第20套

子序列计数

题目信息

时间限制: 1s

空间限制: 256M

输入文件: count.in

输出文件: count.out

题目描述

众所周知,一个长度为 nn 的序列共有 2n−12^n-1 个不同的非空子序列,现给出一个长度为 nn 的序列 a1,a2,…,ana_1, a_2, \dots, a_n,其中 0≤ai<2m0 \leq a_i<2^m,且 aia_i 互不相同

定义 aa 的一个子序列 p=ap1ap2…apkp=a_{p_1}a_{p_2}\dots a_{p_k} 是合法的,当且仅当:

  1. 1≤p1<p2<⋯<pk≤n1\leq p_1 < p_2 < \dots < p_k \leq n
  2. ∀1≤i≤k−3,api⊕api+1⊕api+2⊕api+3≠s\forall 1 \leq i \leq k-3, a_{p_i} \oplus a_{p_{i+1}} \oplus a_{p_{i+2}} \oplus a_{p_{i+3}}\neq s,其中 ⊕\oplus 表示异或

请问对于 aa,有多少个合法的非空子序列?请输出答案  mod  998244353\bmod\ 998244353 之后的结果即可

注:长度小于 4 的非空子序列都是合法的。

输入格式

第一行三个正整数 n,m,sn, m, s,其中 nn 表示序列 aa 的长度,mm 表示 aia_i 的范围,ss 的含义如题面所示

接下来一行 nn 个互不相同的非负整数 aia_i

输出格式

一行一个整数表示答案  mod  998244353\bmod\ 998244353 之后的结果

样例

样例输入 1

文本
5 3 3
2 3 4 7 6

样例输出 1

文本
30

数据范围

1≤n≤4000,1≤m≤12,0≤ai,s<2m subtask 1(15pts):n≤10,m≤4 subtask2(20pts) : n≤60,m≤6 subtask 3(25pts):n≤200,m≤8 subtask 4(25pts):n≤1000,m≤10 subtask 5(15pts):n≤4000,m≤12\begin{aligned} & 1 \leq n \leq 4000,1 \leq m \leq 12,0 \leq a_i, s<2^m \\ & \text { subtask } 1(15 p t s): n \leq 10, m \leq 4 \\ & \text { subtask2(20pts) : } n \leq 60, m \leq 6 \\ & \text { subtask } 3(25 p t s): n \leq 200, m \leq 8 \\ & \text { subtask } 4(25 p t s): n \leq 1000, m \leq 10 \\ & \text { subtask } 5(15 p t s): n \leq 4000, m \leq 12\end{aligned}

数据下载

题目 20221 的公开数据

正在读取文件列表…

常用命令

题目 20221 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。