卡片游戏

  题目大意:给你一排卡片,你可以从从中抽一些卡片(但是不能抽最左和最右的卡片),每张卡片上有一个数字,当你从中抽出一张卡片后,你将得卡片的数字和卡片左右两张卡片的数字的乘积的分数,问当剩下最左和最右两张卡片的时候,你可以得到的最小的分数?

  这一题一看好像挺复杂的,但是如果我们换一个思维方式,这一题就会变得很熟悉

  首先这一题是显而易见的DP(找最小值,不能取极限方式)

  首先他要我们抽卡片是吧,一开始我们可能会想到先抽一张看看,然后在扫一遍其他卡片看能否抽,但是这样带来的直接后果就是,我们很难对先前我们抽过的卡片进行分数的储存,那么可以这么想,如果我们在抽卡片之前,把左i张右j张的卡片的抽取已经记下来了(相当于是抽空了),然后我们再把这张卡片和i-1和j+1的卡片的乘积+左i张和右j张卡片的分数加起来不就等于我们当前抽的卡片的分数了吗!那么最后我们就可以维护一个最小值区间,把区间不断扩大到n-2(除掉最左和最右两张),那得出的值即是最后的最小分数

  而这个方法,正是矩阵乘法的顺序安排的思路,熟悉而亲切

  

 #include <stdio.h>
#include <stdlib.h>
#include <string.h> static long long cards[];
static long long dp[][]; void Search(const int);
long long min(const long long, const long long); int main(void)
{
int N, i;
while (~scanf("%d", &N))
{
for (i = ; i < N; i++)
scanf("%d", &cards[i]);
//memset(dp, 0, sizeof(dp));
Search(N);
}
return ;
} long long min(const long long x, const long long y)
{
return x < y ? x : y;
} void Search(const int N)
{
int i, j, k, pos; for (i = ; i < N - ; i++)
dp[i][i] = cards[i - ] * cards[i] * cards[i + ];
for (k = ; k < N - ; k++)
{
for (i = ; i < N - - k; i++)
{
pos = i + k;
dp[i][pos] = cards[i] * cards[i - ] * cards[pos + ] + dp[i + ][pos];//注意cards的位置
for (j = i + ; j < pos; j++)
{
dp[i][pos] = min(dp[i][pos],
cards[j] * cards[i - ] * cards[pos + ] + dp[i][j - ] + dp[j + ][pos]);
}
dp[i][pos] = min(dp[i][pos], cards[i - ] * cards[pos] * cards[pos + ] + dp[i][pos - ]);
}
}
printf("%lld\n", dp[][N - ]);
}

DP:Multiplication Puzzle(POJ 1651)的更多相关文章

  1. 区间dp E - Multiplication Puzzle POJ - 1651

    E - Multiplication Puzzle  POJ - 1651 这个题目没有特别简单,但是也没有我想象之中的那么难,这个题目时区间dp,因为我们是要对区间进行考虑的. 但是呢,这个也和动态 ...

  2. Multiplication Puzzle POJ - 1651

    解法 区间dp例题,长度从2开始到n结束起点从1到n,中间枚举的时候是看着左端点右端点与中点的乘积 代码 #include <iostream> #include <cstring& ...

  3. POJ 1651 区间DP Multiplication Puzzle

    此题可以转化为最优矩阵链乘的形式,d(i, j)表示区间[i, j]所能得到的最小权值. 枚举最后一个拿走的数a[k],状态转移方程为d(i, j) = min{ d(i, k) + d(k, j) ...

  4. poj 1651 Multiplication Puzzle (区间dp)

    题目链接:http://poj.org/problem?id=1651 Description The multiplication puzzle is played with a row of ca ...

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

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

  6. POJ 1651 Multiplication Puzzle (区间DP)

    Description The multiplication puzzle is played with a row of cards, each containing a single positi ...

  7. Poj 1651 Multiplication Puzzle(区间dp)

    Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10010   Accepted: ...

  8. POJ 1651:Multiplication Puzzle 矩阵相乘式DP

    Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7118   Accepted:  ...

  9. POJ1651:Multiplication Puzzle(区间DP)

    Description The multiplication puzzle is played with a row of cards, each containing a single positi ...

随机推荐

  1. Spring的拦截器

    <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>or ...

  2. CodeMap

    CodeMap 这是在博客园看到的一位朋友文章介绍的,很好用的插件,所有的方法,注释块在右边一目了然,找代码方便极了,还能设置代码段的高亮,给代码段设置标识

  3. POJ 2828 Buy Tickets

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  4. HDU 1285 确定比赛名次

    传送门 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. POJ1836Alignment(LCA)

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15135   Accepted: 4911 Descri ...

  6. MyEclipse2014中SVN的使用方法

    MyEclipse中的SVN操作手册 1.导入项目 点击工具栏上的[File-Import],进入下图 (如果你的对话框中没有SVN这一条目,可能是因为你没有安装SVN插件,请安装完成后,在看这篇博客 ...

  7. 高德地图3D版的使用方法

    坐标拾取器: http://lbs.amap.com/console/show/picker 其经纬度与LatLng()方法中的经纬度是对调的 SDK和实例下载: http://lbs.amap.co ...

  8. 初识A*算法

    写这篇文章的初衷是应一个网友的要求,当然我也发现现在有关人工智能的中文站点实在太少,我在这里抛砖引玉,希望大家都来热心的参与. 还是说正题,我先拿A*算法开刀,是因为A*在游戏中有它很典型的用法,是人 ...

  9. Netbeans连接数据库

    /* Netbeans连接数据库 NetBeans项目的“项目属性”中“库”一栏中.Tab页“编译和运行”中已经加上jdbc的驱动文件 */ Connection conn = null;//连接数据 ...

  10. POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”

    POP3 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”.是TCP/IP ...