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;
}

动态规划训练8 [E - Multiplication Puzzle POJ1651]相关推荐

  1. 【POJ - 1651】Multiplication Puzzle(区间dp)

    题干: The multiplication puzzle is played with a row of cards, each containing a single positive integ ...

  2. POJ 1651 Multiplication Puzzle(类似矩阵连乘 区间dp)

    传送门:http://poj.org/problem?id=1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K T ...

  3. POJ - 1651 Multiplication Puzzle (区间dp)

    题目链接:Multiplication Puzzle 定义状态dp[i][j]表示将区间[i, j]全部取完所需要的最小代价,答案就是dp[1][n - 2]. 状态转移方程为:dp[i][j] = ...

  4. 【动态规划DP,二维动归】poj1651,Multiplication Puzzle

    http://poj.org/problem?id=1651 有N张写有数字的卡片排成一行,按一定次序从中拿走N-2张(第1张和最后一张不能拿),每次只拿一张,取走一张卡片的同时,会得到一个分数,分值 ...

  5. POJ-1651 Multiplication Puzzle 矩阵连乘问题(区间dp)

    题意 给我们n个数 让我们随意的跳出其中的数 每挑出一个数 计算代价为左边数* 当前数 * 右边的数 除了首尾两个数不选 中间的数可以任意挑 让我们求最小代价 CODE #include<bit ...

  6. 动态规划训练25 [Food Delivery ZOJ - 3469 ]好题

    Food Delivery ZOJ - 3469 区间DP的一道好题. 在这道题里,无非就是从出发点向左走到x1再向右走到有y1,再向左走到x2,再向右走到y2....这样,一直将所有的顾客遍历完. ...

  7. 动态规划训练23 [Making the Grade POJ - 3666 ]

    Making the Grade POJ - 3666 这道题目有点意思. 我们定义dp[i][j]表示的含义是把包含前i个元素的子序列变成非递减的子序列,并且最后一个元素变成j所需要耗费的最小代价 ...

  8. 动态规划训练19、最短路 [Help Jimmy POJ - 1661 ]

    Help Jimmy POJ - 1661 题意:大致是一个人从某个点开始下落,下落的速度是1m/s,然后在平台上的时候可以左右移动,移动的速度也是1m/s,但是这里有一个限制,就是说每次下落的距离不 ...

  9. 动态规划训练18 [免费馅饼 HDU - 1176 ]

    免费馅饼 HDU - 1176 这也是一道比较简单的动态规划 dp[i][j]表示到时间i,位置为j所能采集的最大馅饼数量 状态转移非常好写 dp[i][j] = max{dp[i-1][j],dp[ ...

最新文章

  1. 12月3号条件控制语句和循环语句
  2. 更改域控制器的计算机名
  3. 在元宇宙里怎么交朋友?Meta发布跨语种交流语音模型,支持128种语言无障碍对话...
  4. linux安装 mysql-5.7.25_Linux 系统下安装 mysql5.7.25(glibc版)
  5. HashSet的简单实现
  6. 学生成绩管理系统数据库设计
  7. 全面探索 FreeMarker 模版引擎的扩展性
  8. SQL SERVER 2000安装遇到的问题小汇总(转载)
  9. QT的QGraphicsItem类的使用
  10. 迭代器模式coding
  11. php扩展管理配置信息,PHP扩展管理 - 城市之雾的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. 人工智能与大数据的耦合,将会怎么影响我们的生活
  13. 数据预处理-数据变换-小波变换
  14. mysql workbench安装出错_MYSQL及MySQL WORKBENCH安装过程遇到的问题及处理方法
  15. Jupyter的配置
  16. 现代计算机教学的特点有哪些,现代信息技术对孩子教育有哪些帮助
  17. html+css罗盘式旋转时钟
  18. css轻松写出梦幻西游动画效果
  19. 微信小程序保存图片以及分享给朋友
  20. 云南大学通信工程827考研上岸经验分享

热门文章

  1. ueditor如何设置上传图片的高度宽度_怎么设置天猫主图
  2. gesturedetector.java_android使用gesturedetector手势识别示例分享
  3. oracle leg函数,032-函数的嵌套与LEGB原则
  4. 长春工业大学计算机科学与技术录取分数,2021年长春工业大学各省各专业最低投档录取分数线统计(文科 理科)...
  5. 各纬度气候分布图_欧洲气候特征:以温带气候类型为主,是海洋性气候最显著的大洲...
  6. leetcode 904:水果成篮(滑动窗口)
  7. C++string容器-字符串拼接
  8. Cef mysql.exe_CEF3.2623使用记录:windows编译
  9. 2019牛客多校第四场 B xor (线性基求交)
  10. NWERC 2018 A. Access Points 二维转一维 + 单调栈