#P13485. [GCJ 2008 EMEA SemiFinal] Bus Stops

    ID: 13296 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划 DP2008矩阵加速Google Code Jam

[GCJ 2008 EMEA SemiFinal] Bus Stops

Description

在火星的第一城市有 NN 个公交车站,这些车站都排成一条直线,总长度为 N1N-1 千米。市长喜欢简洁,所以他将公交车站编号为 11NN,相邻车站之间的距离恰好为 11 千米。

城市里还有 KK 辆公交车。市长需要制定公交车的运行计划,他想知道有多少种不同的安排方式。这个数字可能非常大。幸运的是,有一些限制条件:

  • 一天开始时,所有公交车都在前 KK 个车站(每个车站一辆公交车)。
  • 公交车只能从左向右移动(11 号为最左侧车站)。
  • 一天结束时,所有公交车都必须在最后 KK 个车站(每个车站一辆公交车)。
  • 每个车站恰好有一辆公交车停靠。
  • 对于同一辆公交车,任意两次连续停靠的车站之间的距离最多为 PP 千米。

请帮助市长计算有多少种安排公交车运行计划的方式。由于答案可能很大,只需输出该数字对 3003130031 取模的结果。

Input Format

输入文件的第一行为测试用例数 TT

接下来的 TT 行,每行包含 33 个用空格分隔的整数:NNKKPP

Output Format

对于每个测试用例,输出一种格式为 “Case #tt: [number of ways modulo 3003130031]” 的结果,其中 tt 表示测试用例编号,从 11 开始。

3
10 3 3
5 2 3
40 4 8
Case #1: 1
Case #2: 3
Case #3: 7380

Hint

样例解释

我们将公交车命名为 AABBCC……

对于第一个样例,只有一种可能的安排方式:A1,4,7,10A \rightarrow 1, 4, 7, 10B2,5,8B \rightarrow 2, 5, 8C3,6,9C \rightarrow 3, 6, 9

对于第二个样例,可能的安排方式有:

  • (A1,3,5.B2,4)(A \rightarrow 1,3,5. B \rightarrow 2,4)
  • (A1,3,4.B2,5)(A \rightarrow 1,3,4. B \rightarrow 2,5)
  • (A1,4.B2,3,5)(A \rightarrow 1,4. B \rightarrow 2,3,5)

数据范围

  • 1<T301 < T \leq 30
  • 1<P101 < P \leq 10
  • K<NK < N
  • 1<KP1 < K \leq P

小数据范围(8 分,测试点 1 - 可见)

  • 1<N<10001 < N < 1000

大数据范围(26 分,测试点 2 - 隐藏)

  • 1<N<1091 < N < 10^9

由 ChatGPT 4.1 翻译