传送门:HustOJ
传送门:CodeForce
给出一棵n个节点的树,有l个叶节点,每个叶节点都有一个value值。现有k个min标签,n-l-k个max标签,安排中间节点的标签,输出根节点可能的最大值和最小值。min标签表示向上传递儿子中的最小值,max传递最大值。
主要是dfs。 %%%1 %%%2
就最小值来讲,要想让某一个节点的值最终传递到根节点,它的祖先节点中必须全部采用min标签,最大值亦然。
然后这题想想就会发现就是dfs,每递归一层,层数lev就要加一,求出每个节点可能的最大值与最小值。回溯时根据当前层数和标签数的关系写入当前节点的minmax值。
但是这样会挂在test11。
然后需要注意到,如果一个节点只有一个孩子,那么他向上传递的值与标签无关。所以dfs时,如果一个节点只有一个孩子,那么递归进他的孩子时lev数不加1就行了。
这是一个样例,单步一下看看回溯时minval[5]的值就明白了。
8 2 1 2 3 4 5 5 1 0 0 0 0 0 1 10 5
新闻热点
疑难解答