UVa 10304 - Optimal Binary Search Tree

原创 2016年06月02日 12:45:17

題目:給定一串有序數字f,生成一個BST,使得Σ deep(i)* f(i)最小。

分析:動態規劃,區間dp。按長度遞增枚舉區間。

            狀態方程 f(s,e)= min(f(s,k-1)+ f(k+1,e)+ sum(s,e) - f(k))。

說明:很久沒有寫dp了╮(╯▽╰)╭。

#include <cstring>
#include <cstdio>

int frequency[255];
int interval[255][255];
int cost[255][255];

int main()
{
	int n;
	while (~scanf("%d",&n)) {
		for (int i = 1; i <= n; ++ i) {
			scanf("%d",&frequency[i]);
		}
		
		// 计算区间和,子树整体深度+1时,子树权值增加区间和 
		memset(interval, 0, sizeof(interval));
		for (int i = 1; i <= n; ++ i) {
			interval[i][i-1] = 0;
			for (int j = i; j <= n; ++ j) {
				interval[i][j] = interval[i][j-1] + frequency[j];
			}
		}
		
		// 区间dp,枚举区间中的每个点作为根时的值,取最小值 
		memset(cost, 0, sizeof(cost));
		for (int l = 2; l <= n; ++ l) {
			for (int s = 1; s+l-1 <= n; ++ s) {
				int e = s+l-1;
				cost[s][e] = 10000000;
				for (int k = s; k <= e; ++ k) {
					int Ltree = cost[s][k-1] + interval[s][k-1];
					int Rtree = cost[k+1][e] + interval[k+1][e];
					if (cost[s][e] > Ltree + Rtree) {
						cost[s][e] = Ltree + Rtree;
					}
				}
			}
		}
		printf("%d\n",cost[1][n]);
	}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

UVa 10304 - Optimal Binary Search Tree

/*UVa 10304 - Optimal Binary Search Tree * e(i,j)为搜索一棵包含节点f[i]...f[j]的最优二叉搜索树的代价 * 如果区间规模增大,则要选出一个...

uva 10304 Optimal Binary Search Tree(DP)

Problem E Optimal Binary Search Tree Input: standard input Output: standard output Time Limit: 3...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

uva 10304 Optimal Binary Search Tree

uva 10304 Optimal Binary Search Tree

UVa 10304. Optimal Binary Search Tree

题意为给出一组从小到大的数据的频率,要求建一棵二叉查找树,使得总的cost最低。TotalCost= PathLength【i】*fre【i】+...; 题目较简单,一下就看出了状态和转移方程。 ...

uva-10304 Optimal Binary Search Tree(区间dp)

题意 给一个序列即可 S = (e1,e2,...,en),且e1<e2<..<en.要把这些序列构成一个二叉搜索树。 二叉搜索树是具有递归性质的,且若它的左子树不空,则左子树上所有结点...

UVA 10304 Optimal Binary Search Tree (区间dp)

题目大意:二叉搜索树的左子树的节点一定比当前节点小,右子树的的节点一定比当前节点大。 要求建一棵二叉查找树,使得总的cost最低。 sum = f(e1)*cost(e1) + f(e2)*cos...

UVA | Optimal Binary Search Tree

原题题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=514&page=show_...

10304 Optimal Binary Search Tree

/* 最优搜索二叉树,典型动态规划题,AC 搜索二叉树首先满足二叉树中序遍历是自小变大的,最优搜索二叉树则要求每个节点的路径长和它出现的概率之积的和最小。 最优搜索二叉树的左子树和右子树必须也是最优...

DP优化——四边形不等式 uva 10304 - Optimal Binary Search Tree

// 原文地址 http://www.cnblogs.com/zxndgv/archive/2011/08/02/2125242.html 今天学习了一下四边形不等式,这个东西很早以前就看过,但是...

uva10304 Optimal Binary Search Tree

区间dp
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)