1966 乘法游戏

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
题目描述 Description

乘法游戏是在一行牌上进行的。每一张牌包括了一个正整数。在每一个移动中,玩家拿出一张牌,得分是用它的数字乘以它左边和右边的数,所以不允许拿第1张和最后1张牌。最后一次移动后,这里只剩下两张牌。
  你的目标是使得分的和最小。
  例如,如果数是10 1 50 20 5,依次拿1、20、50,总分是            10*1*50+50*20*5+10*50*5=8000
  而拿50、20、1,总分是1*50*20+1*20*5+10*1*5=1150。

输入描述 Input Description

输入文件的第一行包括牌数(3<=n<=100),第二行包括N个1-100的整数,用空格分开。

输出描述 Output Description

输出文件只有一个数字:最小得分

样例输入 Sample Input

6
10 1 50 50 20 5

样例输出 Sample Output

3650

数据范围及提示 Data Size & Hint
代码:
/* 错误原因 :这个DP方程说明,每次取数只能取一个区间的数,而题目没有这个要求
for(int i=n-2;i>=2;--i)
for(int j=i+1;j<=n-1;++j)
f[i][j]=min(min(f[i][j],f[i+1][j]+a[i]*a[i-1]*a[j+1]),f[i][j-1]+a[i-1]*a[j]*a[j+1]);*/
/*正确解答:f[i][j]表示合并i--j这个区间不包括i和j的最小数
f[i][j]=min(f[i][j],f[i][k]+f[k][j]+num[i]*num[j]*num[k]);因为取数可以跳着取,那么就要再加一重循环,循环这个区间内所有的取数可能*/
/*这个题目是区间型DP,而不是序列性DP*/
#include<cstdio>
#include<iostream>
using namespace std;
#define N 101
#include<cstring>
int f[N][N],n;
int num[N];
void input()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d",&num[i]);
memset(f,,sizeof(f));
for(int i=;i<=n;++i)
f[i][i+]=;/*注意这个初始化,合并两个数的区间,不行的*/
}
void dp()
{
for(int i=n-;i>=;--i)
for(int j=i+;j<=n;++j)
for(int k=i+;k<=j-;++k)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]+num[i]*num[j]*num[k]);
}
int main()
{
input();
dp();
cout<<f[][n]<<endl;
return ;
}

codevs 1966 乘法游戏的更多相关文章

  1. tyvj1014 乘法游戏

    描述 乘法游戏是在一行牌上进行的.每一张牌包括了一个正整数.在每一个移动中,玩家拿出一张牌,得分是用它的数字乘以它左边和右边的数,所以不允许拿第1张和最后1张牌.最后一次移动后,这里只剩下两张牌.   ...

  2. 求次短路 codevs 1269 匈牙利游戏

    codevs 1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Descriptio ...

  3. TYVJ 1014 乘法游戏

    做题记录:2016-08-15 16:10:14 背景 太原成成中学第2次模拟赛 第四道 描述 乘法游戏是在一行牌上进行的.每一张牌包括了一个正整数.在每一个移动中,玩家拿出一张牌,得分是用它的数字乘 ...

  4. codevs 2853 方格游戏--棋盘dp

    方格游戏:http://codevs.cn/problem/2853/ 这和传纸条和noip方格取数这两个题有一定的相似性,当第一眼看到的时候我们就会想到设计$dp[i][j][k][l]$(i,j表 ...

  5. Codevs 1229 数字游戏

    1229 数字游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了 ...

  6. codevs 1229 数字游戏(可重集的全排列)

    传送门 Description Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间.  这个游戏是这样的,首先,他拿出几张纸片,分别写上0到9之间的任意数字(可重复写某个数字),然后 ...

  7. 洛谷 P2670 扫雷游戏==Codevs 5129 扫雷游戏

    题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有 ...

  8. CODEVS 3285 转圈游戏

    [题目描述] n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……, ...

  9. Codevs 1198 国王游戏 2012年NOIP全国联赛提高组

    1198 国王游戏 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 恰逢 H 国国庆,国王邀 ...

随机推荐

  1. Port-knocking 简单教程

    0. "port knocking" 如字面意思,类似'敲门',只是这里敲的是'端口',而且需要按照顺序'敲'端口.如果敲击规则匹配,则可以让防火墙实时更改策略.从而达到开关防火墙 ...

  2. Java 关于微信公众号支付总结附代码

    很多朋友第一次做微信支付的时候都有蒙,但当你完整的做一次就会发现其实并没有那么难 业务流程和应用场景官网有详细的说明:https://pay.weixin.qq.com/wiki/doc/api/js ...

  3. linux之cron定时任务介绍

    前言 linux系统有一个专门用来管理定时任务的进程cron,一般是设置成开机自启动的,通过添加任务可以让服务器定时执行某些任务. cron介绍 linux系统有一个专门用来管理定时任务的进程cron ...

  4. Vue-$emit的用法

    1.父组件可以使用 props 把数据传给子组件.2.子组件可以使用 $emit 触发父组件的自定义事件. vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( ev ...

  5. spin_USACO

    Spinning Wheels1998 ACM NE Regionals Each of five opaque spinning wheels has one or more wedges cut ...

  6. 安全测试===sqlmap(零)转载

    本文转自:https://blog.werner.wiki/sqlmap-study-notes-0/ 感谢作者的整理,如有侵权,立删 零.前言 这篇文章是我学习Sqlmap的用法时做的笔记,记录了S ...

  7. Shell脚本中引用、调用另一个脚本文件的2种方法

    Shell脚本中引用.调用另一个脚本文件的2种方法 http://www.jb51.net/article/67903.htm

  8. ajax之深入解析(1)

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJ ...

  9. 测试php单例模式和静态访问,实例化访问的效率

    // 测试的类class Memory { private static $a= null; public function __construct() { return self::$a; } pu ...

  10. linux服务器上如何显示工作路径

    1. 修改PS环境变量 [root@linux-node01 ~]# vi /etc/bashrc [ "$PS1" = "\\s-\\v\\\$ " ] &a ...