题目大意:
输入t ;t为测试用例个数
接下来t个测试 每个测试用例
第一行输入n; n为矩阵个数 保证n个矩阵依序是可乘的
接下来n行 每行输入p,q;p为长度q为宽度
对给定的n个矩阵确定一个计算次序使得总的乘法次数最少
并输出该最优值
Sample Input

1
4
50 10
10 40
40 30
30 5

Sample Output

10500

理论讲解

https://www.cnblogs.com/Jason-Damon/p/3231547.html

https://blog.csdn.net/wangmengmeng99/article/details/50134673

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int a[],dp[][];
//int pre[55][55];
// /* pre[i][j]=k 即 i到j之间由k断开
// 借此输出最小乘数的表达式 */
//void print_chain(int i, int j)
//{ // 递归输出最小连乘的表达式
// if (i==j) printf("矩阵%d",i);
// else
// {
// printf("(");
// print_chain(i,pre[i][j]);
// printf("*");
// print_chain(pre[i][j]+1,j);
// printf(")");
// }
//}
int main()
{
int t;
while(~scanf("%d",&t))
{
while(t--)
{
int n; scanf("%d",&n);
for(int i=;i<=n;i++)
{
int p,q; scanf("%d%d",&p,&q);
if(i==) a[]=p; a[i]=q;
} // 第一个存行和列 之后的只存列 //memset(pre,0,sizeof(pre));
memset(dp,INF,sizeof(dp)); // 初始化无穷大
for(int i=;i<=n;i++) dp[i][i]=;
/// 只有本身一个矩阵时 矩阵乘积为0 for(int i=;i<=n;i++) /// 枚举矩阵个数 由从小推大
for(int l=;l<=n-i+;l++) /// 枚举左端下标
{
int r=l+i-; // 根据个数 得到右端下标
dp[l][r]=dp[l+][r]+a[l-]*a[l]*a[r];
/// dp[l][r]视为 l矩阵*(dp[l+1][r])矩阵
//pre[l][r]=l; for(int k=l+;k<r;k++)
dp[l][r]=min(dp[l][r],
dp[l][k]+dp[k+][r]+a[l-]*a[k]*a[r]);
/// dp[l][r]视为 (dp[l][k])矩阵*(dp[k+1][r])矩阵 // 当需要记录 pre[][] 时
// {
// int tmp=dp[l][k]+dp[k+1][r]+a[l-1]*a[k]*a[r];
// if(tmp<dp[l][r]) dp[l][r]=tmp, pre[l][r]=k;
// }
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n;j++)
// printf("%d ",pre[i][j]);
// // printf("%d ",dp[i][j]);
// printf("\n");
// }
// print_chain(1,n); // 最小连乘表达式
// printf("\n");
printf("%d\n",dp[][n]); // 最小连乘次数
}
} return ;
}

矩阵连乘 /// 区间DP oj1900的更多相关文章

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

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

  2. 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】

      算法提高 矩阵乘法   时间限制:3.0s   内存限制:256.0MB      问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要 ...

  3. 蓝桥杯:矩阵乘法(区间DP)

    http://lx.lanqiao.cn/problem.page?gpid=T417 题意:…… 思路:n=1000,一开始觉得区间DP会超时,后来想不到其他做法就这样做了,居然没超时. 状态转移: ...

  4. tyvj 1198 矩阵连乘——区间dp

    tyvj 1198 矩阵连乘 题目描述 一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算 ...

  5. POJ1651 Multiplication Puzzle —— DP 最优矩阵链乘 区间DP

    题目链接:https://vjudge.net/problem/POJ-1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65 ...

  6. 算法提高 矩阵乘法 区间DP

    这是神题,n <= 1000,如果是极限数据普通的n^3区间DP怎么可能过?可偏偏就过了. 刘汝佳大哥的训练指南上面说的存在nlgn的算法解决矩阵链乘问题,可是百度都找不到.... AC代码 # ...

  7. [jdoj1090]矩阵_区间dp

    矩阵 jdoj-1910 题目大意:给你连续的n个矩阵的长和宽,保证每连续的两个相邻矩阵满足相乘的条件,不能改变题目中矩阵的位置,求将这些矩阵相乘为一个矩阵的最小乘法次数. 注释:1<=n< ...

  8. P1005 矩阵取数游戏[区间dp]

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的\(m*n\)的矩阵,矩阵中的每个元素\(a_{i,j}\)均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n个.经过m次后 ...

  9. 区间dp复习 之 tyvj 1198 矩阵连乘

    题目描述 一个\(n*m\)矩阵由\(n\)行\(m\)列共\(n*m\)个数排列而成.两个矩阵\(A\)和\(B\)可以相乘当且仅当\(A\)的列数等于\(B\)的行数.一个\(N*M\)的矩阵乘以 ...

随机推荐

  1. 整理delphi及整理原则

    回看delphi使用的人也不多,但一直觉得这门语言挺好的,所以一直在用,在很多方面也给了很多帮助和启示 加上delphi的学习文件也确实比较少,故收集起来也不容易.今日,重新整理一下delphi ,一 ...

  2. 【重磅来袭】阿里小程序IDE上线8大功能

    时隔两个月,10月10日阿里小程序IDE上线了uni-app 跨平台研发支持.预览和真机调试交互优化.预检测新增代码扫描等8项功能,进一步完善了阿里小程序IDE的功能池,给大家更好的开发体验和环境. ...

  3. 小程序生成海报:通过 json 配置方式轻松制作一张海报图

    背景 由于我们无法将小程序直接分享到朋友圈,但分享到朋友圈的需求又很多,业界目前的做法是利用小程序的 Canvas 功能生成一张带有二维码的图片,然后引导用户下载图片到本地后再分享到朋友圈.而小程序 ...

  4. 27 和为S的两个数字

    0 引言 题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 1 抽象问题具体化 举例: 序列为{1,2,3,4 ...

  5. Spring-Security (学习记录三)--读取数据库中的用户和角色

    目录 1.先将hibernate的环境整合进来 2.创建一个数据库security,执行security.sql 3.修改spring-security.xml,采用数据库的方式读取用户跟角色 4.u ...

  6. Windows内核驱动开发入门学习资料

    声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处:本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任.(本 ...

  7. MongoDB点滴

    0 http://blog.csdn.net/mydeman/article/details/6652387 1 MongoDB 内置连接池,不需要使用额外的连接池驱动 Note: The Mongo ...

  8. 《Java语言程序设计》编程练习6.18(检测密码)

    6.18 (检测密码)一些网站对于密码具有一些规则.编写一个方法,检测字符串是否是一个有效密码.     假定密码规则如下:     • 密码必须至少8位字符.     • 密码仅能包含字母和数字. ...

  9. Java中哪个JSON库的解析速度是最快的?

    JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...

  10. 2019 年百度之星·程序设计大赛 - 初赛一 C. Mindis 离散化+dijkstra

    题目传送门 题意:中文题面 思路: 先将所有题目给出的点离散化一下,得到一张n*m的网格,n和m最大都是400,所以我们只需要枚举每个加强的区域,将属于这个区域的边处理一下(所有横着的和竖着的边,暴力 ...