摘要:
这是IOI2005的原题。首先打眼一看,这个肯定是树形动规嘛(至少我是这么认为的)。首先想的是用F[i][j]表示i为根的子树里建j个的最小费用。但是转移不动= =于是就增加一维,这一维是距离i最近的建造了伐木场的祖先。同时,我们使用转换成二叉树和记忆化搜索的办法,可以减少编程复杂度和无用状态。转移是F[i][j][v]=min(F[lch[i]][p][v]+F[rch[i]][q][v]+dis(i,v)//不在i建p+q=j,F[lch[i]][p][i]+F[rch[i]][q][v]//在i建p+q+1=j)(//By YY_More#include<cstdio>#in 阅读全文