HUD-1559 最大子矩阵,dp模拟
最大子矩阵
Time Limit: 30000/10000
MS (Java/Others)
Memory Limit: 32768/32768
K (Java/Others)
1
4 5 2 2
3 361 649 676 588
992 762 156 993 169
662 34 638 89 543
525 165 254 809 280
2474
这题的时间限制竟然是10s,有点不科学,贡献了一发WA,是怪样例水还是怪自己没考虑全呢?
题意很简单:找一个x*y的和最大的子矩阵。
貌似没什么思路,其实这题和我们做的连续最大和很类似,只不过这里拓展成二维的了。连续最大和问题我们可以采用前缀和累加法,然后枚举所有区间即可(数据较小的前提),也可以设置一个变量表示当前最大,然后一直比较。此题就可以采用前缀和法,用sum[i][j]表示从1 1到i j这个矩形所有数的和,然后再找找规律就好了,但千万要注意的是求sun[i][j]时减去重复的。具体请看代码:
const int N=1e3+10;
int n,m,x,y,a[N][N],sum[N][N];
int get_ans()
{
int ans=0;
for(int i=x; i<=n; i++)
for(int j=y; j<=m; j++)
{
int ma=sum[i][j]-sum[i-x][j]-sum[i][j-y]+sum[i-x][j-y];
ans=max(ans,ma);
}
return ans;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&n,&m,&x,&y);
memset(sum,0,sizeof(sum));
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
scanf("%d",&a[i][j]);
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
}
int ans=get_ans();
printf("%d\n",ans);
}
return 0;
}
挺好的一个题,不是很难。
HUD-1559 最大子矩阵,dp模拟的更多相关文章
- HDU 1559 最大子矩阵 (DP)
题目地址:pid=1559">HDU 1559 构造二维前缀和矩阵.即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和.然后枚举每一个矩阵的左上方的 ...
- hdu 1559 最大子矩阵 (简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1559 #include <cstring> #include <cstdlib> ...
- hdu 1559 最大子矩阵(DP)
题目链接:点击链接 #include<stdio.h> #include<string.h> #define max(a,b) a>b?a:b int d[1005][1 ...
- hdu5009 Paint Pearls (DP+模拟链表)
http://acm.hdu.edu.cn/showproblem.php?pid=5009 2014网络赛 西安 比较难的题 Paint Pearls Time Limit: 4000/2000 M ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- 【简单dp+模拟】hdu-5375(2015多校#7-1007)
给你一个二进制数,,每一位有一个权值,让你转格雷码,求所对应格雷码位为1的权值的和:二进制位中的某些位为?,你需要给这些问号赋值使得到的和最大. 首先你得知道二进制转格雷码的规则,即格雷码位为[二进制 ...
- ZOJ1074 (最大和子矩阵 DP)
F - 最大子矩阵和 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Descri ...
- bzoj1084: [SCOI2005]最大子矩阵 dp
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表 ...
- 【BZOJ】1622: [Usaco2008 Open]Word Power 名字的能量(dp/-模拟)
http://www.lydsy.com/JudgeOnline/problem.php?id=1622 这题我搜的题解是dp,我也觉得是dp,但是好像比模拟慢啊!!!! 1400ms不科学! 设f[ ...
随机推荐
- iphone6,键盘收起,H5页面下面出现空白
- RHEL 6.5-----MFS
主机名 IP 安装服务 master 192.168.30.130 mfsmaster.mfsmetalogger node-1 192.168.30.131 chunkserver n ...
- SOLR-disMax查询参数
dismax参数用于处理用户输入的简单短语,并根据字段的重要度进行加权查询,查询范围为多个字段区域.dismax会忽略搜索字符串中的 "AND","OR", & ...
- (转 )Unity对Lua的编辑器拓展
转 http://blog.csdn.net/ZhangDi2017/article/details/61203505 当前版本的Unity(截至Unity5.5.x)中TextAsset类不支持后缀 ...
- 作用域链、this细说
一.作用域链 作用域:浏览器给js的一个生存环境(栈内存) 作用域链:js中的关键字var和function 都可以提前声明和定义,提前声明和定义的放在我们的内存地址(堆内存)中.然后js从上到下逐行 ...
- 关于Android发送短信获取送达报告的问题
最近公司开发一个项目,要求app能够发送短信并获取送达报告.这本不是一个什么难题,实现这一功能的代码一搜一大把,那么这么简单的一个问题,为什么我要在这里提出来呢?那是因为我在写代码的时候掉入了一个坑, ...
- -bash: mysql: command not found 之 MAC
第一次尝试: ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql 提示:Operation not permitted 再次,加sudo附上管理员权限,依旧 ...
- Java虚拟机性能调优相关
一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动 ...
- 洛谷 P2604 [ZJOI2010]网络扩容
题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的最小扩容费用. ...
- (转)SpringMVC学习(十)——SpringMVC与前台的json数据交互
http://blog.csdn.net/yerenyuan_pku/article/details/72514022 json数据格式在接口调用中.html页面中比较常用,json格式比较简单,解析 ...