动态规划训练8 [E - Multiplication Puzzle POJ1651]

Multiplication Puzzle

 POJ - 1651 

题意:

在一个序列中,拿走一个数字,那么得分就是这个数字以及它相邻的两个数字,这三个数字的乘积。求最小得分。

这道题乍一看感觉是区间DP,但是需要逆向思考的技巧。

记dp[i][k]表示以i开头的,长度k的区间。

我们考虑一个区间的时候,记录区间的两个端点分别为l,r。

这个区间两侧的端点是不能被拿走的,那么我们考虑最后一个被拿走的数字k,它的得分一定是区间端点的两个数和它的乘积(a[l]*a[k]*a[r])。

然后我们考虑区间[l,k]之间的情况,这个区间被拿的只剩下区间两个端点了,所以可以直接用子结构dp[l][k-l+1]。

同理区间p[k,r]也被拿的只剩下区间的两个端点了,直接用子结构dp[k][r-l-k+1]

这样的话递推式就非常的清晰了。

dp[i][k] = min(dp[i][k],dp[i][j+1] + dp[i+j][k-j] + a[i]*a[i+j]*a[i+k-1]);//

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX = 106;
int dp[MAX][MAX];
int a[MAX];
int n;
int main(){scanf("%d",&n);for(int i = 0;i < n;i++){cin>>a[i];}for(int k = 3;k <= n;k++){for(int i = 0 ;i + k <= n;i++){dp[i][k] = 1e9;for(int j = 1;j < k-1;j++){dp[i][k] = min(dp[i][k],dp[i][j+1] + dp[i+j][k-j] + a[i]*a[i+j]*a[i+k-1]);}}}cout<<dp[0][n]<<endl;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客-复读数组

正题 题目链接:https://ac.nowcoder.com/acm/contest/1103/A 题目大意 将一个长度为nnn的数组复制成kkk份&#xff0c;然后每个区间的值是一个区间中不同的数的数量&#xff0c;求每个非空区间的值和。 解题思路 若一个区间长度>n>n>n那么他们的值是固定的&#xf…

ASP.NET Core MVC 2.1 顶级参数验证

本文讨论ASP.NET Core 2.1中与ASP.NET Core MVC / Web API控制器中的模型绑定相关的功能。虽说这是一个功能&#xff0c;但从我的角度来看&#xff0c;它更像是一个错误修复&#xff01;请注意&#xff0c;我使用的是 NET Core 2.1 Preview 1&#xff0c;正式版发布后&#xff…

25、sql分析命令explain和desc

explain和desc命令的效果相同&#xff0c;命令格式如下&#xff1a; mysql> explain SELECT s.id sid, s.name sname , t.id tid ,t.name tname FROM student s LEFT JOIN teacher t ON s.name t.name; --------------------------------------------------------------…

P2290-[HNOI2004]树的计数【组合数,Prufer序列】

正题 题目大意:https://www.luogu.org/problem/P2290 题目大意 一棵树无根树第iii个点的度数为did_idi​&#xff0c;求树的数量。 解题思路 更具pruferpruferprufer序列的推论我们可以知道答案就是(n−2)!∏i1n(di−1)!\frac{(n-2)!}{\prod_{i1}^n(d_i-1)!}∏i1n​(di​−1…

动态规划训练9 [Brackets POJ - 2955 ]

Brackets POJ - 2955 再明显不过的区间DP的题目了&#xff0c;要求求出给出符号式中最大匹配的括号数。 考虑区间[l,r]&#xff0c;如果str[l]与str[r]匹配了&#xff0c;那么转移方程为dp[l][r] max(dp[l][r],dp[l1][r-1] 2); 然后考虑将区间分成2部分 dp[l][r] max(dp[l…

.net core2.0下Ioc容器Autofac使用

Autofac基本使用Autofac是一款轻量级的IOC框架&#xff0c;使用率上还是挺高的&#xff0c;官方网站http://autofac.org&#xff0c;源码下载地址https://github.com/autofac/Autofac。下面以狗的列子来介绍autofac&#xff0c;nuget搜索Autofac进行安装public interface IDog{…

java实现下载时进度条提示

1、实现原理 计算出已经处理的数据记录数与所有需要导出的数据记录数的比例&#xff0c;根据每一个登陆用户的不同将比例存入缓存中&#xff0c;前台设计一个定时器&#xff0c;每隔一段时间去缓存中获取比例&#xff0c;然后根据比例来展示一下下载的进度。 2、具体代码实现 …

动态规划训练10 [Coloring Brackets CodeForces - 149D]

西安交大 软件53 蔡少斐 整理Coloring Brackets CodeForces - 149D 题目大意&#xff1a; 给定合法的括号序列&#xff0c;让你给括弧上色&#xff0c;并且上色时一定要满足3个要求&#xff1a; &#xff08;1&#xff09;每个括号要么被上红色&#xff0c;要么被上蓝色&…

微软重组变两大事业部:Windows主管离职

微软CEO纳德拉通过内部邮件宣布&#xff0c;整个公司进行重大重组&#xff0c;划分为两个新的事业部(部门)&#xff0c;同时Windows业务主管Terry Myerson(特里梅尔森)将离开微软。Terry Myerson最为人诟病的就是推倒了Windows Mobile而打造全新的Windows Phone&#xff0c;结果…

jzoj3846-七天使的通讯【二分图判定】

正题 题目链接:https://jzoj.net/senior/#main/show/3846 题目大意 长度nnn的直线&#xff0c;mmm条线&#xff0c;将它们分成两边&#xff0c;使同一边不交叉&#xff0c;求是否有方案。 解题思路 将会交叉的直线之间连接边&#xff0c;然后判断是否是二分图即可。 codecod…

41、java应用占用cpu过高原因分析

线上服务器cpu占用过高问题排查 1、定位最耗cpu的进程 命令&#xff1a;top 2、定位最耗cpu的线程 命令&#xff1a;Top –Hp PID 例如&#xff1a;Top –Hp 12086 3、打印线程堆栈信息 命令&#xff1a;Printf ‘%x\n’ PID 例如&#xff1a;printf ‘%x\n’ 12118 先将…

动态规划训练11 [String painter HDU - 2476]

String painter HDU - 2476 题意&#xff1a; 我认为这是一道比较难的问题&#xff0c;自己想了很久&#xff0c;没有想出来怎么做&#xff0c;可能是因为思维僵化吧&#xff0c;一直在想怎么直接的由A变到B&#xff0c;事实上&#xff0c;可以有中间桥梁连接A和B&#xff0c;…

Google Optimization Tools介绍

Google Optimization Tools(OR-Tools)是一款专门快速而便携地解决组合优化问题的套件。它包含了&#xff1a;约束编程求解器。简单而统一的接口&#xff0c;用于多种线性规划和混合整数规划求解&#xff0c;包括 CBC、CLP、GLOP、GLPK、Gurobi、CPLEX 和SCIP。图算法 (最短路径…

11、mysql数据表中数据的查询(3)

说一下子查询&#xff0c;子查询的意义就是使用一个查询语句做为另一个查询语句的条件&#xff0c;一般使用exists和in来引导子查询 exists子查询 exists 放在 where 之后使用&#xff0c;可以看成查询数据所满足的一个条件&#xff0c;只是这个条件的值比较特殊&#xff08;…

jzoj3847-都市环游【矩阵乘法】

正题 题目链接:https://jzoj.net/senior/#main/show/3847 题目大意 nnn个点mmm条边&#xff0c;第iii个点要求hih_ihi​时才可以到达。求经过ttt时从点1到点nnn的方案数。 解题思路 因为hih_ihi​较小&#xff0c;设zi,kz_{i,k}zi,k​表示iii时到kkk的方案数&#xff0c;转移…

使用.Net Core与Google Optimization Tools实现员工排班计划Scheduling

上一篇说完《Google Optimization Tools介绍》&#xff0c;让大家初步了解了Google Optimization Tools是一款约束求解&#xff08;CP&#xff09;的高效套件。那么我们用.Net Core与Google Optimization Tools来实现一个有关员工排班计划的场景感受一下。众所周知&#xff0c;…

动态规划训练12 [G - You Are the One HDU - 4283 ]

2012天津区域赛的一道题目&#xff0c;题目链接如下 You Are the One HDU - 4283 这道题目要说思想的话其实并不是很难&#xff0c;但是我却没做出来。关键就在于读题读不懂&#xff08;How Vegetable I am&#xff01;&#xff09;&#xff0c;到最后搜了别人的题解才明白这道…

42、Java服务内存OOM原因分析

1、出现问题的可能原因 对于应用来说内存分配太少 对象创建太多&#xff0c;又没有释放&#xff0c;造成内存泄漏严重&#xff0c;导致内存耗尽 申请太多的系统资源&#xff0c;系统资源耗尽。例如&#xff1a;不断创建线程&#xff0c;不断发起网络连接 2、如何定位问题&a…

jzoj3850-Fibonacci进制【斐波那契倍增】

正题 题目大意:https://jzoj.net/senior/#main/show/3850 题目大意 定义f(i)f(i)f(i)表示第i1i1i1个斐波那契数 一个数转换成斐波那契进制后第iii位的0/10/10/1表示是否需要加上f(i)f(i)f(i)&#xff0c;然后将1∼∞1\sim \infty1∼∞转换成斐波那契进制后依次输出在屏幕上&a…

Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍

前言&#xff1a;.NET Core 是.NET Framework的新一代版本&#xff0c;是微软开发的第一个跨平台 (Windows、Mac OSX、Linux) 的应用程序开发框架&#xff08;Application Framework&#xff09;&#xff0c;未来也将会支持 FreeBSD 与 Alpine 平台。.Net Core也是微软在一开始…