zoukankan      html  css  js  c++  java
  • JDOJ 1090: 矩阵

    JDOJ 1090: 矩阵

    JDOJ传送门

    Description

    N(2<=N<=500)个矩阵相乘,求进行乘法的最少次数,我们认为两个矩阵A(mn)B(np)的乘法次数为mn*p次。

    Input

    第一行是整数N,接下来N行是对每个矩阵的描述,一行两个整数a,b,(1<=a,b<=50)a表示行,b表示列。输入确保能够相乘。

    Output

    一行输出最少乘法次数。

    Sample Input

    3 50 10 10 20 20 5

    Sample Output

    3500


    题解:

    和能量项链神似。

    区间DP裸题

    套模板即可。

    不会的走这边:

    浅谈区间DP

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn=510;
    int n;
    int a[maxn],b[maxn];
    int dp[maxn][maxn];//dp[i][j]表示从i到j的最大总能量
    int main()
    {
        scanf("%d",&n);
        memset(dp,0x3f,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
            dp[i][i]=0;
        }
        for(int len=2;len<=n;len++)
            for(int i=1;i<=n-len+1;i++)
            {
                int j=i+len-1;
                for(int k=i;k<j;k++)
                    dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+(a[i]*b[k]*b[j]));
            }
        printf("%d
    ",dp[1][n]);
        return 0;
    }
    
  • 相关阅读:
    ubuntu安装redis
    ubuntu安装mongodb
    IO-MYSQL的理解
    HTTP协议理解
    linux面试
    mysql引擎事物支持
    ubuntu安装scrapy方法
    mysql关系型和非关系型区别
    mysql引擎
    vue优势
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13809316.html
Copyright © 2011-2022 走看看