[BZOJ1564][NOI2009]二叉查找树(区间DP)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1564

分析:

首先因为每个点的数据值不变,所以无论树的形态如何变,树的中序遍历肯定不变,就是所有数据值从小到大排。

然后设f[i][j][v]表示中序遍历的i~j位组成一颗子树,其中要求权值都>=v的最小花费

枚举k作为树根(i<=k<=j)

则两种情况:

若k的权值<v,则f[i][j][v]=min(f[i][k-1][v]+f[k+1][j][v]+额外费用+i~j的频率和)

若k的权值>=v,则f[i][j][v]=min(f[i][k-1][k的权值]+f[k+1][v][k的权值]+i~j的频率和)

注意权值离散一下就行

上一篇:shell中的特殊符号总结


下一篇:odoo 清除所有运行数据