社区讨论

为什么会超过?

P1005[NOIP 2007 提高组] 矩阵取数游戏参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi4f0p5o
此快照首次捕获于
2025/11/18 18:13
4 个月前
此快照最后确认于
2025/11/18 18:13
4 个月前
查看原帖
请大神看看,为什么会超时呀
CPP
var s:qword;
    n,m,i,j,k,t,max:longint;
    a:array[1..80,1..80]of qword;
    b:array[1..10000]of qword;
  function f(k:longint):longint;
    var s:qword;
        i:integer;
    begin
      s:=1;
      for i:=1 to k do s:=s*2;
      f:=s;
    end;
  procedure try(k,x,y,t,s:longint);
    begin
      s:=s+b[t]*a[i,k];
      if (x>y) then begin
                      if s>max then max:=s;
                      exit;
                    end;
      try(x,x+1,y,t+1,s);
      try(y,x,y-1,t+1,s);
    end;
begin
  readln(n,m);s:=0;
  fillchar(a,sizeof(a),0);
  for i:=1 to m do b[i]:=f(i);
  for i:=1 to n do 
    begin
      for j:=1 to m do read(a[i,j]);
      readln;
    end;
  for i:=1 to n do 
    begin
      max:=0;
      try(1,2,m,1,0);
      try(m,1,m-1,1,0);
      s:=s+max;
    end;
  writeln(s);
end.

回复

1 条回复,欢迎继续交流。

正在加载回复...