题目:

小团有一个由N个节点组成的二叉树,每个节点有一个权值。定义二叉树每条边的开销为其两端节点权值的乘积,二叉树的总开销即每条边的开销之和。小团按照二叉树的中序遍历依次记录下每个节点的权值,即他记录下了N个数,第i个数表示位于中序遍历第i个位置的节点的权值。之后由于某种原因,小团遗忘了二叉树的具体结构。在所有可能的二叉树中,总开销最小的二叉树被称为最优二叉树。现在,小团请小美求出最优二叉树的总开销。
1<=N<=300

思路:

首先想到了搜索,但是常规的搜索时间复杂度为O(N!),最多(300!)次,肯定超时。然后准备用记忆化搜索,也就是将搜索中的中间变量记录下来,减小搜索的次数。

记忆化搜索的代码

# 记忆化搜索,记录过程变量
N = int(input())
tree = list(map(int, input().split()))
tree.insert(0, 0)
m = [[[-1]*(N+1) for i in range(N+1)] for j in range(N+1)]# m[l][r][p] 表示左边到l,右边到r,根为p的权重
ans = float('inf')def dfs(tree, l, r, p): # 搜索当父亲为p的时候,从l到r的权重最小值if l>r:return 0if m[l][r][p]!=-1:return m[l][r][p]# 以i为根,开始搜索res = float('inf')for i in range(l,r+1):left = dfs(tree, l, i-1, i)right = dfs(tree, i+1, r, i)res = min(res, left+right+tree[p]*tree[i])m[l][r][p]=resreturn res
print(dfs(tree, 1, N, 0))

超时。

查了网上的题解后,准备用树状dp来做。时间复杂度O(N^3)
令ldp[a][b]表示以b+1位置为根节点,左子树的权重和最小值;rdp[a][b]表示以a-1位置为根节点,右子树的权重和最小值:
那么递推公式为:
ldp[a][b]=min(ldp[a][i-1]+tree[b+1]*tree[i]+rdp[i+1][b])
rdp[a][b]=min(ldp[a][i-1]+tree[a-1]*tree[i]+rdp[i+1][b])
初始化:
如果令tree[0]=0,tree[1到N]存储树的结构,那么答案为rdp[1][N]
令ldp,rdp初始化为0,
ldp[1][1]=tree[1]*tree[2]=min(ldp[a][i-1]+tree[b+1]*tree[i]+rdp[i+1][b])
可以直接根据递推公式计算

美团2021校招笔试题 最优二叉树II相关推荐

  1. Python计算序列中数字最大差值(美团2016校招笔试题)

    题目要求:给定一个包含若干数字的序列A(本文以列表为例),求满足0≤a≤b<n(其中n为序列长度)的A[b] - A[a]的最大值. 编程要点:循环结构用法,切片,内置函数enumerate() ...

  2. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  3. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个

    要求: 这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系. 思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部 ...

  4. 美团校招笔试题—数据开发方向(附答案)

    今天给大家的题目是美团点评的校招笔试题--数据开发方向 全都是选择题,文末附赠了答案大家一定要认真思考后再看答案哦~ 答案来了 欢迎各路大神在下面交流呀~

  5. java校招笔试题目_Java校招笔试题

    2020校招笔试题答案及评分标准 满分100分 时间1小时 一.简答题: (5分)写出你用过的linux命令,举例说明其中几个的具体用法. 答案:略.评分标准:正确五个,1分一个. (5分)写出TCP ...

  6. 武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题)

    武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题) 资源: https://download.csdn.net/download/weixin_53403301 ...

  7. 九月十月 阿里 百度 华为 校招笔试题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  8. 2021滴滴笔试题算法题

    2021滴滴笔试题 编程题第一题: 大概是:一个优秀的操作系统,应该具有一个好的分配任务的算法,现在假设 一个任务具有等待时间和执行时间,且必须在先等待后执行,而计算机每次只能执行一个任务,但可以等待 ...

  9. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

最新文章

  1. lucene基本原理
  2. P4213-[模板]杜教筛(Sum)
  3. 国计算机学会聘为全国青少年信,中国计算机学会将继续开展NOI相关活动,暂未作出重新申报的决议...
  4. minitab怎么算西格玛水平_六西格玛黑带培训工具因子分析的使用
  5. 第二十节:一个缺失已久的特性 — module模块
  6. java复制对象_JAVA对象复制的方法
  7. HTTP的短连接、长连接、管道连接流水线
  8. S5p4418平台AP6212 WIFI稳定性的解决过程
  9. 怎么开通PayPal支付?PayPal支付账号申请流程步骤
  10. 高通骁龙200、400、600、800处理器规格分享
  11. 利用百度图像处理API接口实现人脸融合
  12. 计算机组成与系统结构期末复习 第二章 2.2
  13. VBA字符串智能拼接与自动换行 VBA代码助手独家功能
  14. 微信公众号获取定位地图(有经纬度)
  15. JS获取本地IP显示隐藏IP
  16. Android实现应用内多语言切换
  17. TCP/IP协议(2): 以太网(IEEE 802.3) 协议 —— 构成有线局域网的基本协议
  18. 赵小楼《天道》《遥远的救世主》深度解析(122)好事、坏事是人性喜好认为,剥离好坏的认知你会更宽广
  19. java开发视频教程精品整理 全部是牛B教程
  20. 活死细胞染色——Cell Meter 细胞活性检测试剂盒

热门文章

  1. 【大数据存储技术】实验2:MongoDB数据库的部署和操作
  2. Windows远程桌面卡顿问题(包含网络调优)
  3. 分类常用的神经网络模型,典型神经网络模型包括
  4. mysql, mysqladmin, mysqld之间的区别。
  5. 从欧美到亚洲,2019年全球有多少个软件工程师?
  6. Bert使用之一_基本使用
  7. 安装惠普打印机显示等待php,安装惠普打印机出现“新设备现已连接”一直不动怎么办?...
  8. Chrome浏览器安装 React Developer Tools和Redux DevTools插件
  9. Can only install one of: topthink/think-installer[v2.0.0, v1.0.12].
  10. 马尔科夫链Markov以及空间Markov Matlab代码