hdu 1559 最大子矩阵(二维树状数组)
来源:互联网 发布:网络歌手小右结婚了吗 编辑:程序博客网 时间:2024/06/10 01:39
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559点击打开链接
最大子矩阵
Time Limit: 30000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5036 Accepted Submission(s): 2637
Problem 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
14 5 2 23 361 649 676 588992 762 156 993 169662 34 638 89 543525 165 254 809 280
Sample Output
2474
#include <stdio.h>#include <stdlib.h>#include <iostream>#include<algorithm>#include <math.h>#include <string.h>#include <limits.h>#include <string>#include <queue>#include <stack>#include <set>#include <vector>using namespace std;int map[1111][1111];int mm,nn,xx,yy;int lowbit(int x){ return x&(-x);}long long int getsum(int x,int y){ long long int sum=0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) sum+=map[i][j]; return sum;}void add(int x,int y,int num){ for(int i=x;i<=1000;i+=lowbit(i)) for(int j=y;j<=1000;j+=lowbit(j)) map[i][j]+=num;}long long int getans(int x,int y){ return (getsum(x,y))+(getsum(x-xx,y-yy))-(getsum(x-xx,y))-(getsum(x,y-yy));}int main(){ int t=0; scanf("%d",&t); for(int i=0;i<t;i++) { memset (map,0,sizeof(map)); long long int sum=0; scanf("%d%d%d%d",&nn,&mm,&xx,&yy); for(int i=1;i<=nn;i++) for(int j=1;j<=mm;j++) { int mid; scanf("%d",&mid); add(i,j,mid); } for(int i=xx;i<=nn;i++) for(int j=yy;j<=mm;j++) { sum=max(sum,getans(i,j)); } printf("%lld\n",sum); }}
阅读全文
0 0
- hdu 1559 最大子矩阵(二维树状数组)
- 【HDU 1559】最大子矩阵(二维树状数组)
- hdu 1559 最大子矩阵(二维树状数组)
- HDU 1559 最大子矩阵 [二维树状数组]【数据结构】
- 【二维树状数组】hdu 1559 最大子矩阵
- HDU1559 最大子矩阵(二维树状数组)
- HDU1559 最大子矩阵 (二维树状数组)
- 最大子矩阵(二维树状数组)
- 二维树状数组--子矩阵求和
- 100道动态规划——21 HDU 1559 最大子矩阵和 树状数组 最大连续子区间和
- 求二维数组最大子数组和(或矩阵的最大子矩阵和)
- 二维数组和最大的子矩阵
- 二维数组最大子矩阵的求和
- 二维数组最大子矩阵和
- hdu 1081 最大子矩阵(二维前缀和优化)@
- HDU 1505 求最大子矩阵(二维)
- HDU 1559 二维树状数组
- 最大二维子矩阵
- hadoop连接mongdb报错Exception authenticating
- Python类的属性与方法
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- 【黑科技】商场服务员都失业了,原因竟然是
- tensorflow之Supervisor
- hdu 1559 最大子矩阵(二维树状数组)
- Linux笔记
- 测试基础知识总结
- createQuery 与 createNativeQuery 区别
- hibernate工作原理及作用
- Java高级之注解、反射
- vmware安装报错及注册时无权输入许可证密钥的解决办法及步骤
- Python——Django 框架——安全
- AI大行其道,你准备好了吗?—谨送给徘徊于转行AI的程序员