暴零求助
查看原帖
暴零求助
63287
Sky_Brilliant楼主2020/11/2 15:37

var n,i,len,l,r,k,j,min,max:longint;
    a,s:array[-5..205] of longint;
    f,g:array[-5..205,-5..205] of longint;
begin
    readln(n);
    for i:=1 to n do
        for j:=1 to n do
        begin
            f[i,j]:=maxlongint;
            g[i,j]:=-maxlongint;
        end;
    s[0]:=0;
    for i:=1 to n do
    begin
        read(a[i]);
        f[i,i]:=0;
        g[i,i]:=0;
        s[i]:=s[i-1]+a[i];
    end;
    for i:=n+1 to 2*n do
    begin
        f[i,i]:=0;g[i,i]:=0;
        s[i]:=s[i-1]+a[i-n];
    end;
    for len:=2 to n do
        for l:=1 to 2*n-len+1 do
        begin
            r:=l+len-1;
            for k:=l to r-1 do
            begin
                if f[l,r]>f[l,k]+f[k+1,r] then f[l,r]:=f[l,k]+f[k+1,r];
                if g[l,r]<g[l,k]+g[k+1,r] then g[l,r]:=g[l,k]+g[k+1,r];
            end;
            f[l,r]:=f[l,r]+s[r]-s[l-1];
            g[l,r]:=g[l,r]+s[r]-s[l-1];
        end;
    min:=maxlongint;max:=0;
    for i:=1 to n do
    begin
        if f[i,n+i-1]<min then min:=f[i,n+i-1];
        if g[i,n+i-1]>max then max:=g[i,n+i-1];
    end;
    writeln(min);
    writeln(max);
end.
2020/11/2 15:37
加载中...