311268: CF1958F. Narrow Paths

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

F. Narrow Pathstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

Monocarp is wandering through a matrix consisting of $2$ rows and $n$ columns. Let's denote the cell in the $i$-th row and $j$-th column as $(i, j)$. Monocarp starts at cell $(1, 1)$ and wants to reach cell $(2, n)$.

In one move, Monocarp can move in one of two directions:

  • right — from cell $(i, j)$ to cell $(i, j + 1)$;
  • down — from cell $(i, j)$ to cell $(i + 1, j)$.

Monocarp can't go outside the matrix.

Polycarp wants to prevent Monocarp from freely wandering through the matrix. To do this, he wants to choose exactly $k$ different cells in the matrix and block them. He cannot choose cells $(1, 1)$ and $(2, n)$.

For each $i$ from $0$ to $n$, Polycarp wants to know how many ways he can block exactly $k$ cells, so that Monocarp has exactly $i$ different paths from $(1, 1)$ to $(2, n)$. Two paths are considered different if there exists a cell that Monocarp visits in one path but not in the other.

As the number of ways can be quite large, output it modulo $10^9 + 7$.

Input

The only line contains two integers $n$ and $k$ ($2 \le n \le 2 \cdot 10^5$; $2 \le k \le 2 \cdot n - 2$) — the number of columns in the matrix and the number of cells Polycarp wants to block.

Output

Output $n + 1$ integers: for each $i$ from $0$ to $n$, the number of ways to block exactly $k$ cells, so that Monocarp has exactly $i$ different paths from $(1, 1)$ to $(2, n)$. Output all answers modulo $10^9 + 7$.

ExamplesInput
2 2
Output
1 0 0
Input
10 2
Output
45 24 21 18 15 12 9 6 3 0 0
Input
10 5
Output
7812 420 210 90 30 6 0 0 0 0 0
Input
22 10
Output
467563090 1847560 1016158 534820 267410 125840 55055 22022 7865 2420 605 110 11 0 0 0 0 0 0 0 0 0 0

Output

题目大意:
F. 狭窄路径

Monocarp 正在一个由两行 n 列组成的矩阵中游荡。用 (i, j) 表示第 i 行第 j 列的单元格。Monocarp 从单元格 (1, 1) 开始,想要到达单元格 (2, n)。

在一次移动中,Monocarp 可以向以下两个方向之一移动:
- 向右——从单元格 (i, j) 移动到单元格 (i, j + 1);
- 向下——从单元格 (i, j) 移动到单元格 (i + 1, j)。

Monocarp 不能超出矩阵范围。

Polycarp 想要阻止 Monocarp 自由地在矩阵中游荡。为此,他想要在矩阵中恰好选择 k 个不同的单元格并将它们封锁。他不能选择单元格 (1, 1) 和 (2, n)。

对于每个 i 从 0 到 n,Polycarp 想要知道他有多少种方式封锁恰好 k 个单元格,使得 Monocarp 从 (1, 1) 到 (2, n) 有恰好 i 条不同的路径。如果存在一个单元格 Monocarp 在一条路径中访问但在另一条路径中不访问,则认为两条路径是不同的。

由于方案的数量可能非常大,请将答案模上 10^9 + 7 后输出。

输入数据格式:
输入只有一行,包含两个整数 n 和 k(2 ≤ n ≤ 2 × 10^5;2 ≤ k ≤ 2 × n - 2)——矩阵中的列数和 Polycarp 想要封锁的单元格数。

输出数据格式:
输出 n + 1 个整数:对于每个 i 从 0 到 n,封锁恰好 k 个单元格,使得 Monocarp 从 (1, 1) 到 (2, n) 有恰好 i 条不同路径的方案数。将所有答案模上 10^9 + 7 后输出。题目大意: F. 狭窄路径 Monocarp 正在一个由两行 n 列组成的矩阵中游荡。用 (i, j) 表示第 i 行第 j 列的单元格。Monocarp 从单元格 (1, 1) 开始,想要到达单元格 (2, n)。 在一次移动中,Monocarp 可以向以下两个方向之一移动: - 向右——从单元格 (i, j) 移动到单元格 (i, j + 1); - 向下——从单元格 (i, j) 移动到单元格 (i + 1, j)。 Monocarp 不能超出矩阵范围。 Polycarp 想要阻止 Monocarp 自由地在矩阵中游荡。为此,他想要在矩阵中恰好选择 k 个不同的单元格并将它们封锁。他不能选择单元格 (1, 1) 和 (2, n)。 对于每个 i 从 0 到 n,Polycarp 想要知道他有多少种方式封锁恰好 k 个单元格,使得 Monocarp 从 (1, 1) 到 (2, n) 有恰好 i 条不同的路径。如果存在一个单元格 Monocarp 在一条路径中访问但在另一条路径中不访问,则认为两条路径是不同的。 由于方案的数量可能非常大,请将答案模上 10^9 + 7 后输出。 输入数据格式: 输入只有一行,包含两个整数 n 和 k(2 ≤ n ≤ 2 × 10^5;2 ≤ k ≤ 2 × n - 2)——矩阵中的列数和 Polycarp 想要封锁的单元格数。 输出数据格式: 输出 n + 1 个整数:对于每个 i 从 0 到 n,封锁恰好 k 个单元格,使得 Monocarp 从 (1, 1) 到 (2, n) 有恰好 i 条不同路径的方案数。将所有答案模上 10^9 + 7 后输出。

加入题单

上一题 下一题 算法标签: