算法提高 矩阵乘法  
时间限制:3.0s   内存限制:256.0MB
    
问题描述
  有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
  两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
输入格式
  输入的第一行包含一个整数n,表示矩阵的个数。
  第二行包含n+1个数,表示给定的矩阵。
输出格式
  输出一个整数,表示最少的运算次数。
样例输入
3
1 10 5 20
样例输出
150
数据规模和约定
  1<=n<=1000, 1<=ai<=10000。

题目链接:

  http://lx.lanqiao.cn/problem.page?gpid=T417

题目大意:

  给一个矩阵链乘,只能加括号,问最小矩阵运算次数。

题目思路:

  【区间DP】

  f[i][j]表示i~j的最小代价,枚举拆分点k,f[i][j]=min(f[i][k]+f[k][j]+a[i]*a[k]*a[j])

  1. /****************************************************
  2.  
  3. Author : Coolxxx
  4. Copyright 2017 by Coolxxx. All rights reserved.
  5. BLOG : http://blog.csdn.net/u010568270
  6.  
  7. ****************************************************/
  8. #include<bits/stdc++.h>
  9. #pragma comment(linker,"/STACK:1024000000,1024000000")
  10. #define abs(a) ((a)>0?(a):(-(a)))
  11. #define lowbit(a) (a&(-a))
  12. #define sqr(a) ((a)*(a))
  13. #define mem(a,b) memset(a,b,sizeof(a))
  14. const double eps=1e-;
  15. const int J=;
  16. const int mod=;
  17. const int MAX=0x7f7f7f7f;
  18. const double PI=3.14159265358979323;
  19. const int N=;
  20. using namespace std;
  21. typedef long long LL;
  22. double anss;
  23. LL aans;
  24. int cas,cass;
  25. int n,m,lll,ans;
  26. LL a[N];
  27. LL f[N][N];
  28. int main()
  29. {
  30. #ifndef ONLINE_JUDGE
  31. // freopen("1.txt","r",stdin);
  32. // freopen("2.txt","w",stdout);
  33. #endif
  34. int i,j,k,l;
  35. int x,y,z;
  36. // for(scanf("%d",&cass);cass;cass--)
  37. // for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
  38. // while(~scanf("%s",s))
  39. while(~scanf("%d",&n))
  40. {
  41. mem(f,0x7f);
  42. for(i=;i<=n+;i++)
  43. scanf("%lld",&a[i]);
  44. for(k=;k<=n;k++)f[k][k+]=;
  45. for(l=;l<=n;l++)
  46. {
  47. for(i=;i+l<=n+;i++)
  48. {
  49. j=i+l;
  50. for(k=i+;k<j;k++)
  51. {
  52. f[i][j]=min(f[i][j],f[i][k]+f[k][j]+a[i]*a[k]*a[j]);
  53. }
  54. }
  55. }
  56. printf("%lld\n",f[][n+]);
  57. }
  58. return ;
  59. }
  60. /*
  61. //
  62.  
  63. //
  64. */

蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】的更多相关文章

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

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

  2. 算法笔记_081:蓝桥杯练习 算法提高 矩阵乘法(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最 ...

  3. Java实现 蓝桥杯 算法提高 矩阵乘法(暴力)

    试题 算法提高 矩阵乘法 问题描述 小明最近刚刚学习了矩阵乘法,但是他计算的速度太慢,于是他希望你能帮他写一个矩阵乘法的运算器. 输入格式 输入的第一行包含三个正整数N,M,K,表示一个NM的矩阵乘以 ...

  4. Java实现 蓝桥杯VIP 算法提高 高精度乘法

    算法提高 高精度乘法 时间限制:1.0s 内存限制:256.0MB 问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-2 ...

  5. java 蓝桥杯算法提高 矩阵乘法

    思路:根据提示的内容,我们可以得到c[i][j] += a[i][k]*b[k][j],k>=0&&k<s PS:这道题本身不难,但是当我定义A[m][s] B[s][n] ...

  6. Java实现 蓝桥杯 算法提高 矩阵相乘

    算法提高 矩阵相乘 时间限制:1.0s 内存限制:256.0MB 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也 ...

  7. Java实现 蓝桥杯 算法训练 矩阵乘法

    算法训练 矩阵乘法 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 输入两个矩阵,分别是ms,sn大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均 ...

  8. Java实现 蓝桥杯VIP 算法训练 矩阵乘方

    算法提高 矩阵乘方 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个矩阵A,一个非负整数b和一个正整数m,求A的b次方除m的余数. 其中一个nxn的矩阵除m的余数得到的仍是一个nxn的 ...

  9. 形态形成场(矩阵乘法优化dp)

    形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 ...

随机推荐

  1. js 页面图片等元素在普通元素中滚动动态加载技术

    /*! * 2012-01-13 v1.1 偏移值计算修改 position → offset * 2012-09-25 v1.2 增加滚动容器参数, 回调参数 * 2015-11-17 v1.3 只 ...

  2. 题解 洛谷P2147/BZOJ2049【[SDOI2008]洞穴勘测】

    Link-Cut-Tree的模板题啊......(听说还可以用其他的方法做,不管了,直接上LCT) 没有要求维护点权,只需要维护点的连通性即可. 就是朴素的LCT,居然还不要pushup. 感觉有些不 ...

  3. [Python3网络爬虫开发实战] 1.3.1-lxml的安装

    lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高.本节中,我们了解一下lxml的安装方式,这主要从Windows.Linux和Mac三大平台来 ...

  4. 零基础入门学习Python(21)--函数:lambda表达式

    知识点 lambda 表达式 Python 允许使用lambda关键字创建匿名函数 lambda 函数怎么使用? 单个参数 >>> def add(x): return 2*x + ...

  5. 洛谷 3953 NOIP2017提高组Day1 T3 逛公园

    [题解] 先建反向图,用dijkstra跑出每个点到n的最短距离dis[i] 设f[u][k]表示dis(u,n)<=mindis(u,n)+k的方案数.对于边e(u,v,w),走了这条边的话需 ...

  6. linux中的命令

    1,ln-链接 功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s 源文件 目标文件  // -s 是 symbolic(符号,象征)的意思. l ...

  7. Mybatis 处理日期格式自动转换

    java.lang.String和java.util.Date之间自动转换 @DateTimeFormat(pattern="yyyy-MM-dd")//页面写入数据库时格式化 @ ...

  8. BNUOJ 6719 Simpsons’ Hidden Talents

    Simpsons’ Hidden Talents Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU ...

  9. hdu 4431 绝对值之和最小公式

    /* 普通的二分不好写,反正我没写出来,这题核心需要求出绝对值最小公式 sum=|x+10|+|x+5|+|x+1|+|x-2|+|x-6|;sumx[1]=-10;sumx[2]=-15;sumx[ ...

  10. I - Balancing Act POJ - 1655

    Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the t ...