题目传送门:https://www.luogu.com.cn/problem/P1040
1. 这个题的求最大加分二叉树的过程,类似石子合并问题。
因为是1.2.3.4...n是中序遍历,所以当以k为某子树根时,1~k-1构成左子树,k+1~n构成右子树。很符合石子问题。
另dp[ i ][ j ]表示由 i 节点到 j 节点所组成的子树的最大加分。
则dp[ i ][ j ] = dp[ i ][ k - 1 ] * dp[ k + 1 ][ j ] + score[ k ];
其中k表示由 i 到 j 节点组成子树的根,i=
则dp[ i ][ j ] = max(dp[ i ][ j ] , dp[ i ][ k -1 ] * dp[ k + 1 ][ j ] + score[ k ]); i<=K<=j
我们使用s[ i ][ j ] = k 来记录K。
#include
#include
#include
#include
#include
#include
#include