问大神四重循环怎么剪枝

P2004 领地选择

上面的程序最后两个超时了
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


|