美团2021-10-4最优二叉树Ⅱ
小团有一个由N个节点组成的二叉树,每个节点有一个权值。定义二叉树每条边的开销为其两端节点权值的乘积,二叉树的总开销即每条边的开销之和。小团按照二叉树的中序遍历依次记录下每个节点的权值,即他记录下了N个数,第i个数表示位于中序遍历第i个位置的节点的权值。
之后由于某种原因,小团遗忘了二叉树的具体结构。在所有可能的二叉树中,总开销最小的二叉树被称为最优二叉树。现在,小团请小美求出最优二叉树的总开销。
/*
思路:
记忆化搜索
枚举每个a[i]为当前的根节点,搜索a[i]左边为左子节点,a[i]右边为右子节点,计算最大值
*///#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>//memset头文件
using namespace std;const int inf = 1 << 30;
const int maxn = 310;
int vis[maxn][maxn][maxn];//备忘录
vector<int> v(maxn, 0);int dfs(int left, int right, int root)
{if (left > right)//不包括等号return 0;if (vis[left][right][root] != -1)//如果备忘录已经有数了,直接返回return vis[left][right][root];int res = inf;//在root结点为父节点时,i结点为根节点的最小开销//以当前数组第一位为根,逐个遍历可能的情况for (int i = left; i <= right; ++i){int l = dfs(left, i - 1, i);//以i为根的左子树的最小开销int r = dfs(i + 1, right, i);//以i为根的右子树的最小开销res = min(res, l + r + v[i] * v[root]);}vis[left][right][root] = res;//存在备忘录return res;
}int main()
{int n;scanf("%d", &n);for (int i = 1; i <= n; ++i)///从1开始存储{scanf("%d", &v[i]);}memset(vis, -1, sizeof vis);//将备忘录全置为-1printf("%d", dfs(1, n, 0));//假的根节点return 0;
}
美团2021-10-4最优二叉树Ⅱ相关推荐
- 美团2021校招笔试题 最优二叉树II
题目: 小团有一个由N个节点组成的二叉树,每个节点有一个权值.定义二叉树每条边的开销为其两端节点权值的乘积,二叉树的总开销即每条边的开销之和.小团按照二叉树的中序遍历依次记录下每个节点的权值,即他记录 ...
- 美团2021校招笔试-编程题-第10场
链接:淘汰分数_美团笔试题_牛客网 来源:牛客网 某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2-.a_n,小美作为比赛的裁判希望设定一个分数线m,使得所 ...
- leetcode刷题记录2:进度64, 2021.10.23
文章目录 数组的度(题目编号697:[link](https://leetcode-cn.com/problems/degree-of-an-array/)) 二叉搜索树(题目编号700:[link] ...
- 哈夫曼树(最优二叉树)(c/c++)
哈夫曼编码 halfman! halfman! 半人万岁!(来自权力的游戏 Tyrion Lannister) huffman coding哈夫曼编码的核心是构造哈夫曼树─即最优二叉树,带权路径长度最 ...
- 6.6.1最优二叉树(赫夫曼树)
首先我们来看一个伪代码.这个是代表成绩的等级. 然后我们知道,每一次高考,学生的成绩分布应该接近某个比例,现在我们假如分别规律如下: 为此可以作出下面的这个树. 我们发现,概率分布主要是在70-79, ...
- 哈夫曼树【最优二叉树】【Huffman】
[转载]只为让价值共享,如有侵权敬请见谅! 一.哈夫曼树的概念和定义 什么是哈夫曼树? 让我们先举一个例子. 判定树: 在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序 ...
- 7.8 最优二叉树与哈夫曼编码
最优二叉树定义 对于一棵树,可以将每一个结点赋一个数值,称之为结点的权重(weight),简称权.定义一棵树上某个结点ViV_i的带权路径长度(weighted path length)为从根节点到该 ...
- 美团2021笔试题(第十场)-公司食堂
美团2021笔试题(第十场)-公司食堂 题目 小美和小团所在公司的食堂有N张餐桌,从左到右摆成一排,每张餐桌有2张餐椅供至多2人用餐,公司职员排队进入食堂用餐.小美发现职员用餐的一个规律并告诉小团:当 ...
- WPL、最优二叉树(哈夫曼树)
定义:最优树,带权路径长度最短的树 基本概念: 1:路径长度:从树的一个结点到另一个结点的路径中,路径上的分支数目为路径长度 2:树的路径长度:从根结点到每个结点的路径长度之和 3:树的带权路径长度( ...
最新文章
- Android stado 运行项目,apk does not exist on disk.
- struct timeval结构体
- 我肝了一个月,给你写出了这本Java开发手册。
- apache camel_Apache Camel入门
- java arraylist .get_Java ArrayList get()方法
- oracle去重保留一条_关于oracle数据库物理结构(文件)的一些总结
- 部署Vista需要了解的十大事项
- 向模块化进军,创建类
- java实现Execl中的STDEVP函数
- 挂机宝是服务器还是虚拟主机,挂机宝属于虚拟主机吗
- 机械专业怎么学matlab,MATLAB在机械类专业课教学中的应用
- html5 队列展示,设计一个队列研究实例
- 计算机组成cpu的是,组成计算机cpu的两大部件
- linux7重置密码操作,在CentOS 7/RHEL 7系统上重置root密码的方法
- 语言拟人向:来自Python、JAVA、C语言的“傲娇”自我介绍
- Oracle 错误总结及问题解决 ORA
- 以亲身经历解读经典的定律或法则
- 社区卫生服务管理系统
- ProM安装以及配置
- [bzoj5314][Jsoi2018]潜入行动_树形背包dp