AT_nomura2020_f Sorting Game
题目描述
高桥君和雪君想出了一个使用数列的游戏,规则如下:
- 准备一个长度为 $ M $ 的数列 $ a\ =\ a_1,\ a_2,\ \ldots,\ a_M $,由介于 $ 0 $ 和 $ 2^N-1 $ 之间的整数构成。
- 首先,雪君可以进行以下操作任意次:
- 选择一个正整数 $ d $,对于所有的 $ i~(1\ \leq\ i\ \leq\ M) $,将 $ a_i $ 用二进制表示时的第 $ d $ 位(最低位为第 $ 1 $ 位)变为 $ 0 $。
- 在雪君的所有操作结束后,高桥君可以进行以下操作任意次,目标是使 $ a $ 升序排列。这里,序列 $ a $ 是升序的,当且仅当对于任意 $ i\ ~\ (1\ \leq\ i\ \leq\ M\ -\ 1) $,都有 $ a_i\ \leq\ a_{i\ +\ 1} $。
- 选择序列 $ a $ 中相邻的两个元素 $ a_i,\ a_{i\ +\ 1} $,如果 $ a_i $ 和 $ a_{i\ +\ 1} $ 用二进制表示时恰好有一位不同,则交换 $ a_i $ 和 $ a_{i\ +\ 1} $。
可以用于游戏的、由介于 $ 0 $ 和 $ 2^N-1 $ 之间的整数构成且长度为 $ M $ 的序列共有 $ 2^{NM} $ 个。
其中,有多少个序列满足:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列?请输出答案对 $ 10^9\ +\ 7 $ 取模的结果。
输入格式
输入以以下格式从标准输入给出:
> $ N $ $ M $
输出格式
输出满足条件的序列个数对 $ 10^9\ +\ 7 $ 取模的结果。条件为:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列。
说明/提示
### 约束条件
- 输入均为整数。
- $ 1\ \leq\ N\ \leq\ 5000 $
- $ 2\ \leq\ M\ \leq\ 5000 $
### 样例解释 1
例如,考虑序列 $ a\ =\ 1,\ 3,\ 1,\ 3,\ 1 $。此时:
- 将各元素的第 $ 1 $ 位变为 $ 0 $,则 $ a $ 变为 $ 0,\ 2,\ 0,\ 2,\ 0 $;
- 将各元素的第 $ 2 $ 位变为 $ 0 $,则 $ a $ 变为 $ 1,\ 1,\ 1,\ 1,\ 1 $;
- 将各元素的第 $ 1 $ 位和第 $ 2 $ 位都变为 $ 0 $,则 $ a $ 变为 $ 0,\ 0,\ 0,\ 0,\ 0 $。
包括雪君不进行操作而 $ a $ 不变的情况,在每种情况下,高桥君都可以通过重复交换二进制表示恰好有一位不同的相邻元素,将序列升序排列。
因此,这个序列是满足条件的序列之一。