题目链接:http://noi.openjudge.cn/ch0206/1768/

可能是数据修改了吧,O(n6)过不了了。

主要是在求一个矩阵的和时,重复计算了很多次。

矩阵首先压缩一下。在输入的时候,就计算好每一列的和于a[i][j]中。

dp:

枚举上界(第一重循环),枚举下界(第二重循环),枚举列数(第三重循环),总的时间复杂度为O(n3);

怎么得到这一列的和呢? 就是利用预处理的 a 数组。temp= a[j][k] - a[i-1][k];

然后这一列上的 dp 方程 f[k] = max(f[k-1]+temp,temp);  //选还是不选这一列;

temp2 = max(f[k]) 是这一列的最优值。循环完后,就是 ans = max(temp2) 只一个区间的最优值了。

  1. /*
  2. #include<iostream>
  3. using namespace std;
  4.  
  5. #define INF 0x3f3f3f3f
  6.  
  7. const int Maxn = 110;
  8. int a[Maxn][Maxn];
  9.  
  10. int main()
  11. {
  12. int n;
  13. cin>>n;
  14. for(int i=1; i<=n; i++)
  15. for(int j=1; j<=n; j++)
  16. cin>>a[i][j];
  17.  
  18. int ans = -INF;
  19. int sum = 0;
  20. for(int i=1; i<=n; i++)
  21. {
  22. for(int j=1; j<=n; j++)
  23. {
  24. for(int r=i; r<=n; r++)
  25. {
  26. for(int c=j; c<=n; c++)
  27. {
  28. sum = 0;
  29. for(int k=i;k<=r;k++) {
  30. for(int t=j;t<=c;t++) {
  31. sum +=a[k][t];
  32. }
  33. }
  34. if(sum>ans)
  35. ans = sum;
  36. }
  37. }
  38. }
  39. }
  40.  
  41. cout<<ans<<endl;
  42.  
  43. return 0;
  44. }
  45. */
  46.  
  47. #include <bits/stdc++.h>
  48. using namespace std;
  49.  
  50. const int INF = 0x3f3f3f3f;
  51. const int Maxn = ;
  52. int a[Maxn][Maxn];
  53. int f[Maxn];
  54. int n;
  55.  
  56. int main()
  57. {
  58. int ans = -INF;
  59.  
  60. scanf("%d",&n);
  61. for(int i=; i<=n; i++)
  62. for(int j=; j<=n; j++)
  63. {
  64. scanf("%d",&a[i][j]);
  65. a[i][j] +=a[i-][j];
  66. }
  67.  
  68. for(int i=; i<=n; i++)
  69. {
  70. for(int j=i; j<=n; j++)
  71. {
  72. memset(f,,sizeof(f));
  73. int temp1 = -INF;
  74. for(int k=; k<=n; k++)
  75. {
  76. int temp2 = a[j][k] - a[i-][k];
  77. f[k] = max(f[k-]+temp2,temp2);
  78. temp1 = max(temp1,f[k]);
  79. }
  80. ans = max(ans,temp1);
  81. }
  82. }
  83.  
  84. printf("%d\n",ans);
  85.  
  86. return ;
  87. }

noi 1768 最大子矩阵的更多相关文章

  1. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  2. 1768:最大子矩阵(NOIP2014初赛最后一题)

    1768:最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...

  3. 崩 oj 1768 最大子矩阵

    描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵.比如,如下4 * 4的矩阵0 -2 -7  0 9  2 -6  2 -4  1 - ...

  4. NOI 动态规划题集

    noi 1996 登山 noi 8780 拦截导弹 noi 4977 怪盗基德的滑翔翼 noi 6045 开餐馆 noi 2718 移动路线 noi 2728 摘花生 noi 2985 数字组合 no ...

  5. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  6. #DP# ----- OpenJudge最大子矩阵

    OpenJudge 1768:最大子矩阵 总时间限制: 1000ms   内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 ...

  7. openjudge-NOI 2.6基本算法之动态规划 专题题解目录

    1.1759 最长上升子序列 2.1768 最大子矩阵 3.1775 采药 4.1808 公共子序列 5.1944 吃糖果 6.1996 登山 7.2000 最长公共子上升序列 8.2718 移动路线 ...

  8. dp专练

    dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> ...

  9. NOI-动规题目集锦

    162:Post Office 解题思路 #include<bits/stdc++.h> using namespace std; ],f[][],mi[][],i,j; int main ...

随机推荐

  1. 安装wampserver之后,浏览器中输入localhost页面显示IIS7解决办法

    1.wampserver图标为绿色才为正常启动,如果为橘色说明端口(默认为80)被占用:可以点击图标,然后点Apache->Service->测试80端口,来验证端口是否被占用. 如果占用 ...

  2. iOS Mail.app inject kit

    from:https://github.com/jansoucek/iOS-Mail.app-inject-kit 测试机:iOS 8.2 发一封邮件. Apple ID的重要性不言而喻,这种钓鱼手法 ...

  3. 一次有趣的XSS漏洞挖掘分析(3)最终篇

    这真是最后一次了.真的再不逗这个程序员了.和预期一样,勤奋的程序员今天又更新程序了.因为前面写的payload都有一个致命的弱点,就是document.write()会完全破坏DOM结构.而且再“完事 ...

  4. Android错误:W/ResourceType(2411): No package identifier when getting value for resource number 0x

    报错信息: 07-04 11:14:43.064: W/ResourceType(2411): No package identifier when getting value for resourc ...

  5. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  6. Android应用字体更改

    首先下载字库 中华字体网 然后在项目的assets目录下建立文件夹fonts.将字体库文件xxx.ttf放入 然后使用下面工具类,自定义控件自己注意添加 public class TypefaceTo ...

  7. NEC学习 ---- 布局 -三列,左侧自适应

    效果图: html代码: <div id="demo4"> <div class="g-bd4 f-cb"> <div class ...

  8. Android Glide数据更新及内存缓存、硬盘缓存清理

    [转] 原文                                         Android Glide数据更新及内存缓存.硬盘缓存清理 Android的Glide在加载图片时候内部默 ...

  9. 主动模式下FTP的详细工作过程(转) 挺详细

    主动模式下FTP的详细工作过程   PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建立连接,该连接属于命令通道,利用该通道来下达控 制指令: ...

  10. Swift声明参考

    一条声明可以在你的程序里引入新的名字和构造.举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义 新的命名好的枚举,结构,类和协议类型.你也可以使用一条声明来延长一个已经存在的命名好的类型 ...