hdoj 1559 最大子矩阵
2016-04-19 23:11
513 查看
C - DP 矩阵压缩技巧
Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。
Input
输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。
Output
对于每组数据,输出一个整数,表示子矩阵的最大和。
Sample Input
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
Sample Output
2474
先求横着每行的y个和,,,然后再求竖着的每x 个的<y个和>....
不知道是不是DP 矩阵压缩技巧..
代码:
Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。
Input
输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。
Output
对于每组数据,输出一个整数,表示子矩阵的最大和。
Sample Input
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
Sample Output
2474
先求横着每行的y个和,,,然后再求竖着的每x 个的<y个和>....
不知道是不是DP 矩阵压缩技巧..
代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define LL long long int n,m,x,y; int shu[1005][1005]; LL he[1005][1005],s,sum; int main() { int t;scanf("%d",&t); while (t--) { memset(he,0,sizeof(he)); scanf("%d%d%d%d",&n,&m,&x,&y); for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { scanf("%d",&shu[i][j]); he[i][j]=he[i][j-1]+shu[i][j]; if (j>y) he[i][j]-=shu[i][j-y]; } } sum=0; for (int j=y;j<=m;j++) { s=0; for (int i=1;i<=n;i++) { s+=he[i][j]; if (i>x) s-=he[i-y][j]; sum=max(s,sum); } } printf("%lld\n",sum); } return 0; }
相关文章推荐
- 关于应用权限的问题
- 用Eslipse开发Android案例(1)——计算器<part1>
- 用QT创建一个Windows Service以及踩到的若干坑
- 2016第17周二
- Mybatis与Hibernate的详细对比
- 华为设备常用命令
- 使用Jquery实现点击文字变成输入框、点击按钮刷新网页
- 一步步构建大型网站架构
- android intent 传递list或者对象
- Linux驱动开发-15、网络设备驱动
- 电子相册系统(九)分页
- robotframework笔记16
- 第七周作业
- #leetcode#206. Reverse Linked List
- 搜索与机器学习
- RestFul API初识
- Django进阶(一) 数据库的ORM操作之一对多
- CSS滤镜
- Android的性能优化
- Swift中文教程(六)函数