最大子矩阵 hdu 1559
来源:互联网 发布:mac扩展屏幕到windows 编辑:程序博客网 时间:2024/05/20 06:31
//题目的意思很简单,而且给我们的时间10秒,一开始用了很笨的方法,直接模拟,超时
//改了之后效率明显升高
#include<iostream>//2321883 2010-04-10 11:57:25 Accepted 1559 125MS 4156K 623 B C++ 悔惜晟
#include<cstdio>
#include<string>
using namespace std;
int num[1001][1001];
int main()
{
int t, n, m, i, j, x ,y;
scanf("%d", &t);
while(t--)
{
scanf("%d %d %d %d", &n, &m, &x, &y);
memset(num, 0, sizeof(num));
int max1 = INT_MIN;//原来这个可以这么用的
int tp;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
{
scanf("%d", &num[i][j]);
num[i][j] += num[i - 1][j] + num[i][j - 1] - num[i - 1][ j - 1];
if(i >= x && j >= y)
{
tp = num[i][j] - num[i - x][j] - num[i][j - y] + num[i - x][j - y];
if(tp > max1)
max1 = tp;
}
}
printf("%d/n", max1);
}
}
/* 超时版,
#include<iostream>
#include<cstdio>
using namespace std;
int num[1001][1001];
int sum(int i, int j, int x, int y)
{
int count = 0;
int k, t;
for( k = i; k <= x; k++)
for(t = j; t <= y; t++)
count += num[k][t];
return count;
}
int main()
{
int t, n, m, x, y;
scanf("%d", &t);
while(t--)
{
int i, j;
scanf("%d %d %d %d", &n, &m, &x, &y);
int max1 = INT_MIN;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
scanf("%d", &num[i][j]);
for(i = 1; i <= n + 1 - x ; i++)
for(j = 1; j <= m + 1- y; j++)
{
if(max1 < sum(i, j, i + x - 1, j + y - 1))
max1 = sum(i, j, i + x - 1, j + y - 1);
}
printf("%d/n", max1);
}
}
- 最大子矩阵 hdu 1559
- HDU 1559 最大子矩阵
- HDU 1559 最大子矩阵
- HDU 1559 最大子矩阵
- hdu 1559 最大子矩阵
- HDU 1559 最大子矩阵
- HDU-1559最大子矩阵
- hdu 1559 最大子矩阵
- HDU 1559 最大子矩阵
- hdu 1559 最大子矩阵
- hdu 1559 最大子矩阵
- HDU 1559 最大子矩阵
- hdu 1559最大子矩阵
- HDU 1559 最大子矩阵
- HDU 1559 最大子矩阵
- HDU 1559 最大子矩阵
- HDU 1559 最大子矩阵
- hdu-1559 最大子矩阵
- Win32Forth初学者指导-起步
- 循环的嵌套-打印九九乘法表
- 出差
- 程序员的五大层次
- switch()中的两个参数共享一个结果
- 最大子矩阵 hdu 1559
- 安装好IIS后发布网站
- Delphi下的COM编程
- 让delphi2010操作界面回到delphi7模式
- Java操作文件一(pdf)
- 论坛1.3;进制转换;
- 属性匹配--MATCHPROP(MA)
- 单片机仿真之跑马灯
- 修改Linux默认启动级别或模式