#P14367. [JOISC 2018] 帐篷 / Tents

    ID: 16128 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划 DP2018组合数学JOISC/JOIST(日本)

[JOISC 2018] 帐篷 / Tents

题目描述

JOI 君经营着一个露营地。该露营地被划分为一个 HHWW 列的矩形网格。行与东西方向平行,列与南北方向平行。从北往南第 ii 行、从东往西第 jj 列的区域称为区域 (i,j)(i, j)

JOI 君打算在部分区域搭建帐篷。每个帐篷必须恰好占据一个区域,且任意两个帐篷不得占据同一区域。

每个帐篷的入口朝向四个方向之一:北、南、东或西。露营地中所搭帐篷的入口方向必须满足以下条件:

  • 若两个区域 (i1,j)(i_1, j)(i2,j)(i_2, j)(其中 1i1<i2H1 \le i_1 < i_2 \le H1jW1 \le j \le W)均被帐篷占据,则区域 (i1,j)(i_1, j) 中帐篷的入口必须朝南,区域 (i2,j)(i_2, j) 中帐篷的入口必须朝北。
  • 若两个区域 (i,j1)(i, j_1)(i,j2)(i, j_2)(其中 1j1<j2W1 \le j_1 < j_2 \le W1iH1 \le i \le H)均被帐篷占据,则区域 (i,j1)(i, j_1) 中帐篷的入口必须朝东,区域 (i,j2)(i, j_2) 中帐篷的入口必须朝西。

JOI 君对在露营地至少搭建一个帐篷的方案总数感到好奇。若存在某个区域,其帐篷状态(是否存在帐篷,或帐篷入口方向)在两种方案中不同,则这两种方案被视为不同。

任务

编写一个程序,计算满足题面所述条件的至少搭建一个帐篷的方案总数,对 10000000071\,000\,000\,007 取模后的余数。

输入格式

从标准输入读取以下数据:

  • 输入第一行包含两个整数 HHWW,表示 JOI 君经营的露营地被划分为 HHWW 列。

输出格式

向标准输出写入一行。输出应包含满足题面所述条件的至少搭建一个帐篷的方案总数,对 10000000071\,000\,000\,007 取模后的余数。

1 2
9
4 3
3252
100 100
561068619

提示

样例 1 解释

如下图所示,共有 99 种搭帐篷的方式。图中字母 E,W,S,NE,W,S,N 分别代表出入口朝向东、西、南、北的帐篷。

:::align{center} :::

数据范围

所有输入数据满足以下条件:

  • 1H30001 \le H \le 3\,000
  • 1W30001 \le W \le 3\,000

子任务

共有 2 个子任务。每个子任务的得分和附加约束如下:

子任务 1 [48 分]

  • 1H3001 \le H \le 300
  • 1W3001 \le W \le 300

子任务 2 [52 分]

无额外约束。