这个题比较简单,考虑先找到树中最高的节点$x$,那么水位有两种情况,要么各个子树的水位都不超过$H[x]$,要么大于$H[x]$就会让所有点的水位的一样,因此可以直接递归处理出子树的方案数$F[sub]$,
那么$F[x]=\prod F[sub]+m-H[x]$,直接暴力分治下去就行了。
这题可以用排序并查集或者一种快速查找区间最大值的数据结构优化成$O(n\log n)$,但是数据范围小,没有必要。
代码:
1 |
|
这个题比较简单,考虑先找到树中最高的节点$x$,那么水位有两种情况,要么各个子树的水位都不超过$H[x]$,要么大于$H[x]$就会让所有点的水位的一样,因此可以直接递归处理出子树的方案数$F[sub]$,
那么$F[x]=\prod F[sub]+m-H[x]$,直接暴力分治下去就行了。
这题可以用排序并查集或者一种快速查找区间最大值的数据结构优化成$O(n\log n)$,但是数据范围小,没有必要。
代码:
1 | #include<stdio.h> |