宋壬初吧 关注:25贴子:419
  • 1回复贴,共1
  • 221.194.73.*
program mar;
  var
    sum,a:array[0..101,0..101] of longint;
    f:array[0..15,0..15,0..15,0..225,0..1,0..1] of longint;
    m,n,w,i,j,k,s,k1,k2,p,q,ans:longint;
  function max(p,q:longint):longint;
    begin
      if p>q then max:=p else max:=q;
    end;
  begin
    assign(input,'mar.in');
    reset(input);
    assign(output,'mar.out');
    rewrite(output);
    read(m,n,w);
    for i:=1 to m do
     for j:=1 to n do
      begin
        read(a[i,j]);
        sum[i,j]:=sum[i-1,j]+a[i,j];
      end;
    for i:=1 to n do
    for j:=1 to m do
    for k:=j to m do
    if (k-j+1)<=w then
    for s:=k-j+1 to w do
     begin
       for p:=1 to j do
       for q:=k to m do
       for k1:=0 to 1 do
       for k2:=0 to 1 do
        f[i,j,k,s,0,0]:=max(f[i,j,k,s,0,0],
         f[i-1,p,q,s-(k-j+1),k1,k2]+sum[k,i]-sum[j-1,i]);
       for p:=j to k do
       for q:=k to m do
       for k1:=1 to 1 do
       for k2:=0 to 1 do
        f[i,j,k,s,1,0]:=max(f[i,j,k,s,1,0],
         f[i-1,p,q,s-(k-j+1),k1,k2]+sum[k,i]-sum[j-1,i]);
       for p:=1 to j do
       for q:=j to k do
       for k1:=0 to 1 do
       for k2:=1 to 1 do
        f[i,j,k,s,0,1]:=max(f[i,j,k,s,0,1],
         f[i-1,p,q,s-(k-j+1),k1,k2]+sum[k,i]-sum[j-1,i]);
       for p:=j to k do
       for q:=p to k do
       for k1:=1 to 1 do
       for k2:=1 to 1 do
        f[i,j,k,s,1,1]:=max(f[i,j,k,s,1,1],
         f[i-1,p,q,s-(k-j+1),k1,k2]+sum[k,i]-sum[j-1,i]);
     end;
    for i:=1 to n do
    for j:=1 to m do
    for k:=j to m do
    for k1:=0 to 1 do
    for k2:=0 to 1 do
    ans:=max(ans,f[i,j,k,w,k1,k2]);
    writeln(ans);
    close(output);
  end.



1楼2009-11-12 16:50回复
    高一的TSOIer们都会了么?


    禁言 |2楼2010-08-08 14:07
    回复