上面的程序最后两个超时了
by youyou @ 2017-01-24 15:21:06
剪枝了一点,还差一个点过不了
by youyou @ 2017-01-24 15:44:58
```cpp
var a:array[0..1000,0..1000] of integer;
n,m,c,i,j,sum,max,x,y,k1,k2,num1,num2,k:longint;
begin
readln(n,m,c);
for i:=1 to n do
begin
for j:=1 to m do read(a[i,j]);
readln;
end;
max:=-maxlongint;
for i:=1 to n-c+1 do
for j:=1 to m-c+1 do
begin
if j=1 then
begin
sum:=0;num1:=0;num2:=0;
for k1:=0 to c-1 do
for k2:=0 to c-1 do sum:=sum+a[i+k1,j+k2];
for k:=0 to c-1 do num1:=num1+a[i+k,1];
end
else
begin
for k:=0 to c-1 do
begin
num1:=num1+a[i+k,j-1];
num2:=num2+a[i+k,j+c-1];
end;
sum:=sum-num1+num2;
num1:=0;
num2:=0;
end;
if sum>max then
begin
max:=sum;
x:=i;y:=j;
end;
end;
writeln(x,' ',y);
end.
```
by youyou @ 2017-01-24 15:45:39
求大神解答
by youyou @ 2017-01-24 15:46:11
先预处理
by void_zxh @ 2017-02-10 18:28:25
二维前缀和@ youyou
by loadingnow @ 2017-08-01 20:34:25
很暴力的普及题
by 浮云启心 @ 2018-02-27 20:24:31
二维前缀和
暴力
~~**dp**~~
by wisdom_grass @ 2018-03-31 17:19:09
前缀和
by yagyagyag @ 2020-02-09 15:13:45
@[youyou](/user/35865)
只有二重循环,首都的边长是固定的,只需要确定左上角就行了
by 262620zzj @ 2022-07-21 14:47:13