noi 1768 最大子矩阵
题目链接: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) 只一个区间的最优值了。
/*
#include<iostream>
using namespace std; #define INF 0x3f3f3f3f const int Maxn = 110;
int a[Maxn][Maxn]; int main()
{
int n;
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
cin>>a[i][j]; int ans = -INF;
int sum = 0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
for(int r=i; r<=n; r++)
{
for(int c=j; c<=n; c++)
{
sum = 0;
for(int k=i;k<=r;k++) {
for(int t=j;t<=c;t++) {
sum +=a[k][t];
}
}
if(sum>ans)
ans = sum;
}
}
}
} cout<<ans<<endl; return 0;
}
*/ #include <bits/stdc++.h>
using namespace std; const int INF = 0x3f3f3f3f;
const int Maxn = ;
int a[Maxn][Maxn];
int f[Maxn];
int n; int main()
{
int ans = -INF; scanf("%d",&n);
for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
{
scanf("%d",&a[i][j]);
a[i][j] +=a[i-][j];
} for(int i=; i<=n; i++)
{
for(int j=i; j<=n; j++)
{
memset(f,,sizeof(f));
int temp1 = -INF;
for(int k=; k<=n; k++)
{
int temp2 = a[j][k] - a[i-][k];
f[k] = max(f[k-]+temp2,temp2);
temp1 = max(temp1,f[k]);
}
ans = max(ans,temp1);
}
} printf("%d\n",ans); return ;
}
noi 1768 最大子矩阵的更多相关文章
- NOI题库 1768最大子矩阵 题解
NOI题库 1768最大子矩阵 题解 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...
- 1768:最大子矩阵(NOIP2014初赛最后一题)
1768:最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...
- 崩 oj 1768 最大子矩阵
描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵.比如,如下4 * 4的矩阵0 -2 -7 0 9 2 -6 2 -4 1 - ...
- NOI 动态规划题集
noi 1996 登山 noi 8780 拦截导弹 noi 4977 怪盗基德的滑翔翼 noi 6045 开餐馆 noi 2718 移动路线 noi 2728 摘花生 noi 2985 数字组合 no ...
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- #DP# ----- OpenJudge最大子矩阵
OpenJudge 1768:最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 ...
- openjudge-NOI 2.6基本算法之动态规划 专题题解目录
1.1759 最长上升子序列 2.1768 最大子矩阵 3.1775 采药 4.1808 公共子序列 5.1944 吃糖果 6.1996 登山 7.2000 最长公共子上升序列 8.2718 移动路线 ...
- dp专练
dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> ...
- NOI-动规题目集锦
162:Post Office 解题思路 #include<bits/stdc++.h> using namespace std; ],f[][],mi[][],i,j; int main ...
随机推荐
- visual studio 2012 的制作ActiveX、打包和发布[转]
开发环境是Vs 2012 Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...
- 【HDU2196 Computer】经典树形dp
http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:有n台电脑相连,让你求每台电脑与离它最远的那台电脑的距离. 思路:两遍搜索即可,第一遍从上到下,第二 ...
- td内容过长,省略号表示
.word{ min-width:100px; max-width:200px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis ...
- android之消息机制(二)
消息通道:Looper 首先编写main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk ...
- imac上php环境php+apache+mysql
---恢复内容开始--- Mac OS X系统已预装集成了Apache+php,但是在新的系统中苹果取消了图形界面,所以只能从命令行开启了. 启用apache: 打开终端 在终端中可以查看集成的php ...
- Python起步(2)
单行注释:#多行注释:'''或""" 一条语句写在一行之内,不需要分号分隔两条语句在同一行,中间分号隔开缩进语句块中只有一条语句,可以直接写在“:”之后使用“\”进行续行 ...
- Android中如何解决输入法键盘和activity页面遮挡的问题
不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan" 希望动态调整高度android:windowSoftInputMo ...
- JAVA程序设计 实验一
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- phpqrcode不能输出二维码
phpqrcode不能输出二维码 注意 权限..... 注意 扩展 header('Content-Type: image/png'); include_once 'phpqrcode/qrlib ...
- SHARE NOTHING SHARE EVERYTHING
http://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&mid=2649736156&idx=1&sn=23931f48282f6ef ...