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 完成