- 天才的记忆
- 2009-07-25 11:24:00 @
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案错误... ├ 标准行输出 -347...
├ 错误行输出 1073...
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 88ms
├ 测试数据 07:答案错误... ├ 标准行输出 -372...
├ 错误行输出 1073...
├ 测试数据 08:答案正确... 72ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 150ms
var t:array[1..2000000] of record
l,r:longint;max:int64;end;
n,m,i,j,a,b:longint;
ans,x,low:int64;
function max(a,b:int64):int64;
begin
if a>b then exit(a) else exit(b);
end;
procedure build(p,a,b:longint);
var m:longint;
begin
t[p].l:=a;t[p].r:=b;
t[p].max:=low;
if a=b then exit;
m:=(a+b) div 2;
build(p*2,a,m);
build(p*2+1,m+1,b);
end;
procedure insert(p,x:longint;y:int64);
var i,j,m:longint;
begin
if (t[p].l=x) then
t[p].max:=max(t[p].max,y)
else exit;
m:=(t[p].l+t[p].r) div 2;
if (t[p].l=x) then insert(p*2,x,y);
if (m+1=x) then insert(p*2+1,x,y);
end;
procedure find(p,a,b:longint);
var i,j,m:longint;
begin
if (t[p].l=a) and (t[p].r=b) then
begin
ans:=max(ans,t[p].max);
exit;
end;
m:=(t[p].l+t[p].r) div 2;
if (a>=t[p].l) and (b=m+1) and (b
2 条评论
-
1048922798 LV 8 @ 2016-11-16 20:33:39
问题很简单。
我跑RMQ的时候记录最开始maxn[i][0]记录的是本身的最大值 AC了
然后最后改成 maxn[i][0]记录的是i和i+1 的最大值 WA 了你们的两个点。 -
2014-10-24 10:42:45@
我靠,和我一样的问题
- 1