站外题求助
  • 板块学术版
  • 楼主hzoi_Shadow
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/3/25 22:29
  • 上次更新2023/10/23 20:28:59
查看原帖
站外题求助
848964
hzoi_Shadow楼主2023/3/25 22:29
tyvj 1198 矩阵连乘
内存限制:128 MiB
时间限制:1000 ms
标准输入输出
题目类型:传统
评测方式:文本比较
题目描述
一个nm矩阵由n行m列共nm个数排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个NM的矩阵乘以一个MP的矩阵等于一个NP的矩阵,运算量为nmp。 矩阵乘法满足结合律,ABC可以表示成(AB)C或者是A(BC),两者的运算量却不同。例如当A=23 B=34 C=45时,(AB)C=64A(BC)=90。显然第一种顺序节省运算量。 现在给出N个矩阵,并输入N+1个数,第i个矩阵是a[i-1]*a[i]

输入格式
第一行n(n<=100) 第二行n+1个数

输出格式
最优的运算量

样例
样例输入
3
2 3 4 5
样例输出
64


#include<bits/stdc++.h>
using namespace std;
long long int f[102][102],a[102];
int main()
{
	#ifndef ONLINE_JUDGE
	   freopen("linshi.in","r",stdin);
	#endif
	long long int n,i,j,k,v;
	memset(f,0x3f,sizeof(f));
	cin>>n;
	for(i=1;i<=n+1;i++)
	{
		cin>>a[i];
		f[i][i]=0;
	}
	for(i=1;i<=n;i++)
	{
		for(j=2;j<=n;j++)
		{
			v=min(i+j-1,n);
			for(k=j;k<v;k++)
			{
				f[j][v]=min(f[j][v],f[j][k]+f[k+1][v]+a[j-1]*a[k]*a[v]);
			}
		}
	}
	cout<<f[1][n];
	return 0;
}
2023/3/25 22:29
加载中...