#HK4301. 「ROIR 2019 Day2」间歇训练

「ROIR 2019 Day2」间歇训练

题目描述

译自 ROI Regional 2019 Day2 T2. Интервальные тренировки

体育学院开发了一种新的间歇训练方法。根据这种方法,运动员每天都要训练,但负荷的增加和减少必须交替进行。

训练计划由一组正整数 a1,a2,,ama_{1}, a_{2}, \ldots, a_{m} 组成,其中 aia_{i} 描述了运动员在第 ii 天的训练负荷。任何两个相邻的天数必须有不同的负荷:aiai+1a_{i} \neq a_{i+1}。为了使负荷的增加和减少交替进行,对于 ii 从 1 到 m2m-2,必须满足以下条件:如果 ai<ai+1a_{i}<a_{i+1},则 ai+1>ai+2a_{i+1}>a_{i+2};如果 ai>ai+1a_{i}>a_{i+1},则 ai+1<ai+2a_{i+1}<a_{i+2}

在整个训练计划中,总负荷必须为 nn,即 a1+a2++am=na_{1}+a_{2}+\ldots+a_{m}=n。计划的天数没有限制,mm 可以是任意值,但第一天的负荷是固定的:a1=ka_{1}=k

在测试新方法之前,学院管理层想知道有多少不同的训练计划符合上述要求。

编写一个程序,根据给定的 nnkk,确定有多少不同的训练计划符合上述要求,并输出这些计划数量除以 109+710^{9}+7 的余数。

输入格式

输入的第一行包含两个整数 nnkk (1n5000,1kn)(1 \leq n \leq 5000, 1 \leq k \leq n)

输出格式

输出一个整数:符合要求的训练计划数量除以 109+710^{9}+7 的余数。

6 2
4

在第一个样例中,符合要求的计划有:[2,1,2,1],[2,1,3],[2,3,1],[2,4][2,1,2,1], [2,1,3], [2,3,1], [2,4]

3 3
1

在第二个样例中,唯一符合要求的计划是 [3][3]

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制 子任务依赖
11 2323 1n101 \leq n \leq 10
22 2020 1n301 \leq n \leq 30 11
33 2323 1n5001 \leq n \leq 500 1,21,2
44 3434 1n50001 \leq n \leq 5000 1,2,31,2,3