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 ...
随机推荐
- javascript中字符串的常用方法
<script type="text/javascript"> String substring(start,end): slice(start,end); 这两个函数 ...
- alpha发布之小组评论
在alpha发布之后,让我看到了,大家都很努力,在alpha发布前大家都尽量完成自己的项目,虽然大家都很忙,但是,都在抽出时间趟黑起早的完成项目,在你们身上有很多很值得我学习的地方,虽然我认为半夜睡觉 ...
- CMS .NET 程序框架 从2.0/3.5升级到4.0 版本后 需要调整的地方
问题一: document.forms1.action 不可使用 需要修改程 document.forms[0] .NET 程序框架 从2.0/3.5升级到4.0 版本后,document.forms ...
- 标签data-*属性使用
<div class="page_index" style="margin-top:20px;"> <span id="showPa ...
- Java 集合快速失败异常
快速失败 在JDK中,查看集合有很多关于快速失败的描述: 注意,此实现不是同步的.如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步.(结构上的修改是指添 ...
- UIView常见属性设置汇总
1.圆角设置 viewT.layer.cornerRadius = 10;//设置那个圆角的有多圆 viewT.layer.borderWidth = 10;//设置边框的宽度,当然可以不要 view ...
- CCEA OCX
<HTML> <HEAD> <TITLE>CCEAActiveX演示页面</TITLE> <meta http-equiv="Conte ...
- Qunie问题
Quine 以哲学家 Willard van Orman Quine (1908-2000) 而命名,表示一个可以生成他自己的完全的源代码的程序.编写出某个语言中最简短的 quine 通常作为黑客们的 ...
- sql 时间差
select * from Tickets where ( case when UnloadTime is null then datediff(hh,LoadTime,getdate()) else ...
- AndroidStudio2.0开发环境搭建
实验内容 下载安装Android Studio 配置使用环境 实验要求 下载安装Android Studio 基本环境配置 实验步骤 1.首先从安卓开发者网站下载最新的Android Studio h ...