AT_code_festival_2017_qualb_e Popping Balls

题目描述

有 $A+B$ 个球排成一行。最左边的 $A$ 个球被涂成红色,最右边的 $B$ 个球被涂成蓝色。 你需要进行如下操作: - 首先,选择满足 $1 \leq s, t \leq A+B$ 的整数 $s, t$。 - 然后,重复如下步骤 $A+B$ 次:每一步,你可以从最左边第 $1$ 个、$s$ 个(如果存在)或 $t$ 个(如果存在)(均为从 $1$ 开始编号)的球中选一个,把这个球送给“すぬけ君”。 问你有多少种不同的方式把球送给“すぬけ君”?请你输出方案数对 $10^9+7$ 取模的结果。 若某个位置第 $k$ 次送出的球颜色不同,则认为对应的两种方式是不同的。特别地,选择的 $s, t$ 并不会影响方案的区分。另外,同色的球不加区分。

输入格式

输入由一行组成,格式如下: > $A$ $B$

输出格式

输出答案。

说明/提示

## 限制 - $1 \leq A, B \leq 2000$ ## 样例解释 1 有 $3$ 个红球和 $3$ 个蓝球,共有 $20$ 种不同的赠送方法,所有情况都可以实现。下面是其中一种操作示例(`r` 表示红球, `b` 表示蓝球): - 选择 $s=3, t=4$。 - 初始排列为 `rrrbbb`。 - 将第 $3$ 个球(`r`)送出,队列变为 `rrbbb`。 - 将第 $4$ 个球(`b`)送出,队列变为 `rrbb`。 - 将第 $1$ 个球(`r`)送出,队列变为 `rbb`。 - 将第 $3$ 个球(`b`)送出,队列变为 `rb`。 - 将第 $1$ 个球(`r`)送出,队列变为 `b`。 - 将第 $1$ 个球(`b`)送出,队列变为空。 在上述方法中,“すぬけ君”最终获得球的顺序为 `rbrbrb`。 ## 样例解释 2 有 $4$ 个红球和 $4$ 个蓝球,共有 $70$ 种赠送方法。其中,`bbrrbrbr`、`brbrbrbr`、`brrbbrbr` 这三种排列无法实现。 由 ChatGPT 5 翻译