蓝桥杯算法提高 矩阵乘法
来源:互联网 发布:网络时间在线 编辑:程序博客网 时间:2024/06/05 20:45
原题:
算法提高 矩阵乘法
时间限制:3.0s 内存限制:256.0MB
问题描述
有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
输入格式
输入的第一行包含一个整数n,表示矩阵的个数。
第二行包含n+1个数,表示给定的矩阵。
第二行包含n+1个数,表示给定的矩阵。
输出格式
输出一个整数,表示最少的运算次数。
样例输入
3
1 10 5 20
1 10 5 20
样例输出
150
数据规模和约定
1<=n<=1000, 1<=ai<=10000。
和上次的合并石子一样的动态规划,只不过是变为乘法在相加。
代码:
#include <iostream>#include <string.h>using namespace std;#define maxn 0x3f3f3f3f#define N 1005long long dp[N][N],p[N][N],sum[N];int main(){ int n,x; cin>>n; memset(dp, 1, sizeof(dp)); for(int i = 0;i <= n;i++) { cin>>sum[i]; dp[i][i] = 0; } for(int l = 2;l <= n;l++) { for(int i = 1;i <= n - l + 1;i++) { long long j = i + l - 1,temp = dp[i + 1][j] + sum[i - 1] * sum[i] * sum[j]; for(int k = i + 1;k < j;k++) { long long t = dp[i][k] + dp[k + 1][j] + sum[i - 1] * sum[k] * sum[j]; temp = min(temp,t); } dp[i][j] = temp; } } cout<<dp[1][n]; return 0;}
1 0
- 算法提高 矩阵乘法 蓝桥杯
- 蓝桥杯算法提高 矩阵乘法
- 算法提高 矩阵乘法
- 算法提高 矩阵乘法
- 算法提高 矩阵乘法
- 算法提高 矩阵乘法
- 蓝桥杯 算法提高 矩阵乘法 区间dp
- 蓝桥杯 算法提高 矩阵乘法 (区间dp)
- 【蓝桥】算法提高 矩阵乘法
- 算法提高 矩阵乘法 区间DP
- 算法提高 矩阵乘法 (区间dp)
- 蓝桥杯--算法训练矩阵乘法
- 蓝桥杯-算法训练-矩阵乘法
- 蓝桥杯 算法训练 矩阵乘法
- 蓝桥杯 算法训练 矩阵乘法
- 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】
- 蓝桥杯 算法提高 高精度乘法 高精压位
- 蓝桥杯 算法提高 矩阵相乘
- Apache POI介绍
- java--08--多线程(三)
- 2016 EC-Final Problem D. Ice Cream Tower(二分+贪心)
- codeforces 672D D. Robin Hood (二分+思维)
- EJBCA简介
- 蓝桥杯算法提高 矩阵乘法
- Pixhawk原生固件PX4之顶层软件结构
- C++反射机制的实现
- Redis主从复制机制
- CSS经验和技巧
- 数据成员初始化,函数重载
- 104. Maximum Depth of Binary Tree
- viewPager来实现fragment滑动效果
- 快讯:中央巡视组进驻北京大学公告