CF2217G Down the Pivot

题目描述

考虑二叉树,每个节点最多有两个子节点,并且每个节点的标记是 $0$ 或 $1$。 每次操作你可以选择一条经过根节点的简单路径,将这条路径上所有节点的标记全部翻转($0$ 变 $1$,$1$ 变 $0$)。注意,长度为 $1$ 的路径也被允许,即只包含根节点本身的路径。 该二叉树的代价定义为:使得树中所有节点的标记都变成 $0$ 所需要的最小操作次数。 给定两个整数 $n$ 和 $k$,统计有且仅有 $n$ 个节点、代价恰好等于 $k$ 的不同有标记二叉树的数量。由于答案可能很大,请输出对 $10^9+7$ 取模后的结果。 如果两棵二叉树的结构不同,或者结构相同但至少有一个节点的标记不同,则认为它们是不同的。

输入格式

每个测试点包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例数量。接下来的每一组测试有一行,包括两个整数 $n$ 和 $k$($1 \le n \le 10^6$,$0 \le k \le n$)。 保证所有测试用例的 $n$ 总和不超过 $10^6$。

输出格式

对于每个测试用例,输出一行一个整数,表示有恰好 $n$ 个节点且代价恰好为 $k$ 的有标记二叉树的数量,对 $10^9+7$ 取模。

说明/提示

在第一个测试用例中,$n=2$,$k=0$。有两种可能的二叉树:一个根节点有一个左孩子,或一个根节点有一个右孩子。由于要求代价为 $0$,则所有节点都必须标记为 $0$,所以答案为 $2$。 在第二个测试用例中,$n=2$,$k=1$。这样的树一共有 $4$ 种。所有合法的带标记二叉树如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2217G/518b20b5f694dc2a19dd563bd64ea61641d93b2907be618c4dc9b80c2e9a874d.png) 在第三个测试用例中,$n=1$,$k=1$。只有一棵树,即单个根节点,标记为 $1$,所以答案为 $1$。 由 ChatGPT 5 翻译