leetcode1130 Minimum Cost Tree From Leaf Values
思路:
区间dp。
实现:
class Solution
{
public:
int mctFromLeafValues(vector<int>& arr)
{
int n = arr.size();
vector<vector<int>> maxn(n, vector<int>(n, ));
for (int i = n - ; i >= ; i--)
{
for (int j = i; j < n; j++)
{
if (j == i) maxn[i][j] = arr[i];
else
{
maxn[i][j] = max(maxn[i][j - ], arr[j]);
}
}
}
vector<vector<int>> dp(n, vector<int>(n, INT_MAX));
for (int i = n - ; i >= ; i--)
{
for (int j = i; j < n; j++)
{
if (j == i) dp[i][j] = arr[i];
else if (j == i + ) dp[i][j] = arr[i] * arr[j];
else
{
dp[i][j] = min(dp[i][j], dp[i + ][j] + arr[i] * maxn[i + ][j]);
dp[i][j] = min(dp[i][j], dp[i][j - ] + arr[j] * maxn[i][j - ]);
for (int k = i + ; k < j - ; k++)
{
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + ][j] + maxn[i][k] * maxn[k + ][j]);
}
}
}
}
return dp[][n - ];
}
}
leetcode1130 Minimum Cost Tree From Leaf Values的更多相关文章
- LeetCode 1130. Minimum Cost Tree From Leaf Values
原题链接在这里:https://leetcode.com/problems/minimum-cost-tree-from-leaf-values/ 题目: Given an array arr of ...
- 数据结构与算法分析–Minimum Spanning Tree(最小生成树)
给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树(spanning tree). 如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST,Mi ...
- 最小生成树(Minimum Spanning Tree)——Prim算法与Kruskal算法+并查集
最小生成树——Minimum Spanning Tree,是图论中比较重要的模型,通常用于解决实际生活中的路径代价最小一类的问题.我们首先用通俗的语言解释它的定义: 对于有n个节点的有权无向连通图,寻 ...
- Minimum Spanning Tree
前言 说到最小生成树(Minimum Spanning Tree),首先要对以下的图论概念有所了解. 图 图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象.图的定义方式有两种 ...
- 【LeetCode】1135. Connecting Cities With Minimum Cost 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Kruskal算法 日期 题目地址:https://l ...
- 【HDU 4408】Minimum Spanning Tree(最小生成树计数)
Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST
E. Minimum spanning tree for each edge Connected undirected weighted graph without self-loops and ...
- CF# Educational Codeforces Round 3 E. Minimum spanning tree for each edge
E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...
- Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA链上最大值
E. Minimum spanning tree for each edge 题目连接: http://www.codeforces.com/contest/609/problem/E Descrip ...
随机推荐
- 肤浅的聊聊关联子查询,数据集连接,TiDB代码,关系代数,等等
本章涉及的内容是TiDB的计算层代码,就是我们编译完 TiDB 后在bin目录下生成的 tidb-server 的可执行文件,它是用 go 实现的,里面对 TiPD 和 TiKV实现了Mock,可以单 ...
- (转)代码审计利器-RIPS实践
一.代码审计工具介绍 代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率. 在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效 ...
- Ubuntu 14.04 查看指定端口的服务
查看已经连接的服务端口(ESTABLISHED) netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查看指定端口,可以结合grep命令: net ...
- ansible 任务流程控制
一.任务委托 默认情况下,ansible的所有任务都是在指定的机器上运行的,当在一个独立的群集环境中配置时,但是只想操作其中的某一台主机,或者在特定的主机上运行,此时就需要用到ansible的任务委托 ...
- c++中的new的应用
代码如下: #include <cstddef> #include <iostream> using namespace std; class CTest{ public: ; ...
- Java 8:掌握 Lambda 表达式
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总 ...
- rsyslog使用简介
1 把日志打到新的日志文件里面 #### RULES ####ruleset(name="remote"){ action(type="omfile" file ...
- EL表达式 与 JSTL标准标签库
目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 ...
- sql server 使用SqlBulkCopy批量插入数据库
sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...
- RVS PA-1800 功放参数
RVS PA-1800大功率功放技术参数: 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论