zoukankan      html  css  js  c++  java
  • 区间DP——tyvj 1198 矩阵连乘

    G. 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=64而A(BC)=90。显然第一种顺序节省运算量。 现在给出N个矩阵,并输入N+1个数,第i个矩阵是a[i-1]*a[i]。

    输入格式

    第一行n(n<=100) 第二行n+1个数

    输出格式

    最优的运算量

    样例

    样例输入

    3
    2 3 4 5
    

    样例输出

    64



    思路如下

    首先,对于

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int n;
     6 long long in[201],dp[201][201]/*第 i 个 至 第 j 个 的 最 小 值 */;
     7 int main()
     8 {
     9     cin>>n;
    10     for(int i=0;i<=n;i++)
    11         cin>>in[i];
    12     memset(dp,0x7f,sizeof(dp));
    13     for(int i=0;i<=n+1;i++)
    14         dp[i][i]=0;
    15     for(int len=1;len<=n;len++)
    16     {
    17         for(int i=1;i<=n;i++)
    18         {
    19             int j=min(n,len+i-1);
    20             for(int k=i;k<j;k++)
    21             {
    22                 dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+in[i-1]*in[k]*in[j]);
    23             }
    24         }
    25     }
    26     cout<<dp[1][n];
    27 } 
  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/lihaolin/p/11276130.html
Copyright © 2011-2022 走看看