wty1104吧 关注:39贴子:1,050

回复:各种代码。。。

只看楼主收藏回复

read(n);
for i:=1 to n do read(f[i,0]);
//初始化
for j:=1 to trunc(ln(n)/ln(2)) do
for i:=1 to n-(1 shl j)+1 do
f[i,j]:=min(f[i,j-1],f[i+(1 shl(j-1)),j-1]);
//查询[x,y]区间内的min
k:=trunc(ln(y-x+1)/ln(2));
exit( min(f[x,k],f[y-(1 shl k)+1,k] );



IP属地:美国17楼2011-11-11 12:04
回复
    begin
    init;
    readln(n);
    for i:=1 to n do read (a[i]);
    for i:=1 to n do dp[i,0]:=a[i];
    for j:=1 to trunc(ln(n)/ln(2)) do
    for i:=1 to n-(1 shl j)+1 do
    dp[i,j]:=max(dp[i,j-1],dp[i+(1 shl (j-1)),j-1] );
    readln(m) ;
    for i:=1 to m do
    begin
    readln(l,r);
    n:=trunc(ln(r-l+1)/ln(2));
    writeln(max(dp[l,n ], dp[r-(1 shl n)+1,n ]))
    end;
    close(output);
    end.


    IP属地:美国18楼2011-11-11 12:28
    回复