luogu#P5853. [USACO19DEC] Tree Depth P
[USACO19DEC] Tree Depth P
题目背景
For the new year, Farmer John decided to give his cows a festive binary search tree (BST)!
To generate the BST, FJ starts with a permutation of the integers , where . He then runs the following pseudocode with arguments and
generate(l,r):
if l > r, return empty subtree;
x = argmin_{l <= i <= r} a_i; // index of min a_i in {a_l,...,a_r}
return a BST with x as the root,
generate(l,x-1) as the left subtree,
generate(x+1,r) as the right subtree;
For example, the permutation generates the following BST:
4
/ \
2 5
/ \
1 3
Let denote the depth of node in the tree corresponding to meaning the number of nodes on the path from to the root. In the above example, and
The number of inversions of is equal to the number of pairs of integers such that and The cows know that the that FJ will use to generate the BST has exactly inversions . Over all satisfying this condition, compute the remainder when is divided by for each
题目描述
为了迎接新年,Farmer John 决定给他的奶牛们一个节日二叉搜索树!
为了生成这个二叉搜索树,Farmer John 从一个 的排列 开始,然后以参数 和 开始运行如下的伪代码:
generate(l,r):
if l > r, return empty subtree;
x = argmin_{l <= i <= r} a_i; // index of min a_i in {a_l,...,a_r}
return a BST with x as the root,
generate(l,x-1) as the left subtree,
generate(x+1,r) as the right subtree;
例如,排列 将产生如下的二叉搜索树:
令 表示节点 在用排列 生成的二叉搜索树中的深度。深度定义为这个节点到根节点的路径上的点数。在上述例子中,。
中的逆序对数等于满足 且 的数对 的个数。奶牛们知道 Farmer John 用来生成二叉搜索树的排列 中恰好有 个逆序对。对于所有满足条件的 ,请计算对于每个 , 对 取模后的结果。
输入格式
输入只有一行,包含三个整数 。
输出格式
输出一行 个整数,第 个整数表示 。两个整数之间用一个空格隔开。
3 0 192603497
1 2 3
3 1 144408983
3 4 4
提示
样例解释 1
对于这个样例,唯一满足条件的排列为 。
样例解释 2
对于这个样例,满足条件的两个排列分别为 和 。
数据范围
对于全部数据,,,保证 是一个 范围中的质数。
对于测试点 ,满足 ;
对于测试点 ,满足 ;
对于测试点 ,满足 。
USACO 2019 December 铂金组T3