区间DP模板题

做区间DP的题目的时候,我们考虑DP[i][j]的含义是什么?

由题意大概是这样的,我们可以从n个数中每次选一个我们以前没选过的数字拿走,需要消耗a[i]*a[i+1]*a[i-1]的体力。

头和尾不能拿走。问最小消耗的体力是多少?

我们这样考虑。

一般DP[1][n]是答案的话,它代表是拿走了2-n-1,并且两头还有未合并的1,n

那么我们很容易写出转移方程:

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

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define LL long long
using namespace std;
LL dp[][];
LL a[];
const int INF = 0x3f3f3f3f;
int main(){
int n;
while(~scanf("%d",&n)){
memset(dp,,sizeof(dp));
for (int i=;i<=n;i++){
scanf("%lld",&a[i]);
}
for (int len=;len<=n;len++){
for (int i=;i+len-<=n;i++){
int j=i+len-;
dp[i][j]=INF;
for (int k=i+;k+<=j;k++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[j]*a[k]);
}
}
}
printf("%lld\n",dp[][n]);
}
return ;
}

最新文章

  1. Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string &#39;android-23&#39; 等错误
  2. CocoaPods for Xcode
  3. Bootstrap_Javascript
  4. 在项目中引用GreenDroid库
  5. hdu 2044 一只小蜜蜂
  6. java连接access数据库
  7. iOS UIKit:TableView之表格创建(1)
  8. C题 - A+B for Input-Output Practice (II)
  9. 用 chrome 调试 node.js 代码
  10. Python内置函数(52)——range
  11. Java利用cors实现跨域请求
  12. 单目视觉里程计 mono vo
  13. 【转】Tesla autopilot 引起致命车祸
  14. Criteria 使用指南
  15. GridColumn (Column Layout and Auto Width)
  16. Cannot find module &#39;webpack/lib/node/NodeTemplatePlugin&#39; 问题原因和解决方案
  17. LTIB for ubuntu12.04
  18. cesium.js 设置缩放最大最小限制
  19. Python20-Day02
  20. 移动应用安全开发指南(Android)--数据验证

热门文章

  1. Linux常用命令速查-用户管理
  2. python --- 基数排序算法
  3. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1
  4. 使用 ASP.NET Core MVC 创建 Web API(一)
  5. 用SpringCloud进行微服务架构演进
  6. 浅谈Linux基本命令
  7. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识
  8. Struts2笔记_拦截器
  9. mysql触发器new和old
  10. Java 8中Stream API学习笔记