#P13815. nomura2020_f Sorting Game

    ID: 13016 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2300动态规划组合数学计数DP构造

nomura2020_f Sorting Game

题目描述

高桥君和雪君想出了一个使用数列的游戏,规则如下:

  • 准备一个长度为 M M 的数列 a = a1, a2, , aM a\ =\ a_1,\ a_2,\ \ldots,\ a_M ,由介于 0 0 2N1 2^N-1 之间的整数构成。

  • 首先,雪君可以进行以下操作任意次:

    • 选择一个正整数 d d ,对于所有的 i (1  i  M) i~(1\ \leq\ i\ \leq\ M) ,将 ai a_i 用二进制表示时的第 d d 位(最低位为第 1 1 位)变为 0 0
  • 在雪君的所有操作结束后,高桥君可以进行以下操作任意次,目标是使 a a 升序排列。这里,序列 a a 是升序的,当且仅当对于任意 i   (1  i  M  1) i\ ~\ (1\ \leq\ i\ \leq\ M\ -\ 1) ,都有 ai  ai + 1 a_i\ \leq\ a_{i\ +\ 1}

    • 选择序列 a a 中相邻的两个元素 ai, ai + 1 a_i,\ a_{i\ +\ 1} ,如果 ai a_i ai + 1 a_{i\ +\ 1} 用二进制表示时恰好有一位不同,则交换 ai a_i ai + 1 a_{i\ +\ 1}

可以用于游戏的、由介于 0 0 2N1 2^N-1 之间的整数构成且长度为 M M 的序列共有 2NM 2^{NM} 个。

其中,有多少个序列满足:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列?请输出答案对 109 + 7 10^9\ +\ 7 取模的结果。

输入格式

输入以以下格式从标准输入给出:

N N M M

输出格式

输出满足条件的序列个数对 109 + 7 10^9\ +\ 7 取模的结果。条件为:在游戏中使用时,无论雪君如何进行操作,高桥君都能通过适当的操作将序列升序排列。

输入输出样例 #1

输入 #1

2 5

输出 #1

352

输入输出样例 #2

输入 #2

2020 530

输出 #2

823277409

说明/提示

约束条件

  • 输入均为整数。
  • 1  N  5000 1\ \leq\ N\ \leq\ 5000
  • 2  M  5000 2\ \leq\ M\ \leq\ 5000

样例解释 1

例如,考虑序列 a = 1, 3, 1, 3, 1 a\ =\ 1,\ 3,\ 1,\ 3,\ 1 。此时:

  • 将各元素的第 1 1 位变为 0 0 ,则 a a 变为 0, 2, 0, 2, 0 0,\ 2,\ 0,\ 2,\ 0
  • 将各元素的第 2 2 位变为 0 0 ,则 a a 变为 1, 1, 1, 1, 1 1,\ 1,\ 1,\ 1,\ 1
  • 将各元素的第 1 1 位和第 2 2 位都变为 0 0 ,则 a a 变为 0, 0, 0, 0, 0 0,\ 0,\ 0,\ 0,\ 0

包括雪君不进行操作而 a a 不变的情况,在每种情况下,高桥君都可以通过重复交换二进制表示恰好有一位不同的相邻元素,将序列升序排列。

因此,这个序列是满足条件的序列之一。