CF1184D2 Parallel Universes (Hard)

题目描述

Heidi 很喜欢进行模拟,因为她能准确地知道新宇宙何时、何地诞生,以及不存在的链接何时、何地断裂。 然而,多元宇宙本身的运行方式却充满神秘。实际上,它是基于概率运行的,而对某些人来说,这本身就很神秘。 在每个单位时间内,当做出决策时,将随机发生以下两种事件之一。设 $l$ 为当前多元宇宙的长度。以概率 $p_{create} = 1 - \frac{l}{m}$ 诞生一个新宇宙;以概率 $p_{break} = \frac{l}{m}$ 在某个位置断开一个不存在的链接。 更具体地说: - 当诞生一个新宇宙时,它会出现在任意两个相邻宇宙之间,或在多元宇宙的两端。每个位置出现的概率均为 $\frac{1}{l+1}$。 - 当断开一个链接时,可以在任意两个相邻宇宙之间断开,每个位置断开的概率均为 $\frac{1}{l-1}$。断开后,多元宇宙被分为两段,不包含 Doctor 的那一段将消失。 与之前一样,Doctor 始终停留在同一个宇宙中。然而,如果某一时刻多元宇宙断裂,使得 Doctor 处于最左端或最右端,则 TARDIS 将停止工作。 在这种情况下,Doctor 必须亲自穿越多元宇宙,寻找修复工具。 我们关心的是,当上述事件发生时,多元宇宙长度的期望值。

输入格式

第一行包含三个整数 $n$、$k$ 和 $m$,分别表示多元宇宙的初始长度、Doctor 的初始位置和多元宇宙的最大可能长度,满足 $1 \leq k \leq n \leq m \leq 250$。

输出格式

输出一个整数,表示多元宇宙长度的期望值。 如果答案为 $\frac{p}{q}$,请输出 $r$,其中 $p \equiv r \cdot q \pmod{10^9 + 7}$。

说明/提示

对于第一和第二个测试点,在没有任何变化的情况下,Doctor 已经处于多元宇宙的某一端。 对于第三个测试点,多元宇宙只能在一个位置断裂,这会使 Doctor 处于某一端。 对于第四个测试点,情况似乎更复杂,因为多元宇宙可能会增长,然后再次断裂。 由 ChatGPT 4.1 翻译