切换到宽版
  • 16358阅读
  • 14回复

NOIP2003普及组复赛试题的问题 [复制链接]

上一主题 下一主题
离线wing
只看该作者 10 发表于: 2006-12-23
双动规
离线sm-star
只看该作者 11 发表于: 2007-08-25
不就是DP么,有什么难的?
离线orangeclk
只看该作者 12 发表于: 2007-08-25
环形DP,单DP。
RP降至零点,NOIP2007完美彻底挂掉。。。
离线121371490
只看该作者 13 发表于: 2007-11-06
Const Maxn=50;
      Maxm=9;
Var h:array[1..Maxn] of Integer;
    g:array[1..Maxn,1..Maxn] of LongInt;
    Fmin,Fmax:array[1..Maxn,1..Maxm] Of Longint;
    n,m,i,j,k,l:Integer;
    Max,Min,Tmax,Tmin,s:Longint;
    fi,fo:String;
Procedure readfile;
Begin
  Readln(n,m);
  For i:=1 to n do
  Readln(h);
End;
Procedure init;
Begin
  For i:=1 to n do
  For j:=i to n do
    Begin
    s:=0;
    For k:=i to j do s:=s+h[k];
    s:=s mod 10;
    If s<0 Then s:=10+s;
    g[i,j]:=s;
    End;
  For i:=1 to n do
  For j:=1 to m do
    Begin Fmin[i,j]:=1;  Fmax[i,j]:=1 End;
  For i:=1 to n do
    Begin
    Fmin[i,1]:=g[1,i];  Fmax[i,1]:=g[1,i]
    End
End;
Procedure move;
Var temp,p:Integer;
Begin
  temp:=h[1];
  For p:=1 to n-1 do
    h[p]:=h[p+1];
  h[n]:=temp;
End;
Procedure solute;
Begin
Max:=-Maxint; Min:=Maxint;
For l:=1 to n do
Begin
  Init;
  For i:=2 to n do
  For j:=2 to m do
    Begin
    Tmax:=-Maxint;
    Tmin:=Maxint;
    For k:=j-1 to i-1 do
      Begin
        If TMax<Fmax[k,j-1]*g[k+1,i] Then Tmax:=Fmax[k,j-1]*g[k+1,i];
        If TMin>Fmin[k,j-1]*g[k+1,i] Then Tmin:=Fmin[k,j-1]*g[k+1,i];
      End;
    Fmax[i,j]:=Tmax; Fmin[i,j]:=Tmin;
    End;
    If Max<Fmax[n,m] Then Max:=Fmax[n,m];
    If Min>Fmin[n,m] Then Min:=Fmin[n,m];
    move;
  End;
End;
Procedure Print;
Begin
Writeln(Min);
Writeln(Max);
End;
Begin
  Readfile;
  Solute;
  Print
End.
离线121371490
只看该作者 14 发表于: 2007-11-08
嘿嘿!
我得不错吧!
   
快速回复
限100 字节
 
上一个 下一个