AT_arc198_e [ARC198E] Monotone OR

题目描述

[problemUrl]: https://atcoder.jp/contests/arc198/tasks/arc198_e 给定一个由 $ 0 $ 到 $ 2^N - 1 $ 的非负整数组成的集合 $ S = \{ s_1, s_2, \dots, s_M \} $。 你初始持有一个非负整数 $ x = 0 $。你可以进行以下操作任意次数,求使得 $ x = 2^N $ 的不同操作方法的数量,结果对 $ 998244353 $ 取模。 - 选择一个满足 $ 1 \le i \le M $ 的整数 $ i $,将 $ x $ 替换为 $ (x \ \mathrm{OR} \ s_i) + 1 $。 其中,$ \mathrm{OR} $ 表示按位或运算。

输入格式

输入通过标准输入给出,格式如下: > $ N $ $ M $ > $ s_1 \ s_2 \ \dots \ s_M $

输出格式

输出使得 $ x = 2^N $ 的不同操作方法的数量,结果对 $ 998244353 $ 取模。

说明/提示

### 约束条件 - $ 1 \le N \le 24 $ - $ 1 \le M \le \min(2^N, 2 \times 10^5) $ - $ 0 \le s_1 < s_2 < \dots < s_M < 2^N $ ### 样例解释 #1 如果用 $ (i, k) $ 表示选择 $ i $ 进行操作后 $ x $ 变为 $ k $,则满足条件的方法共有以下 $ 5 $ 种: - $ (1, 2) \rightarrow (1, 4) $ - $ (1, 2) \rightarrow (2, 3) \rightarrow (1, 4) $ - $ (1, 2) \rightarrow (2, 3) \rightarrow (2, 4) $ - $ (2, 3) \rightarrow (1, 4) $ - $ (2, 3) \rightarrow (2, 4) $ 需要注意的是,即使 $ x $ 的转移路径完全相同,只要选择的 $ i $ 不同,就视为不同的方法。 翻译由 DeepSeek V3 完成