为什么,请教!(感激不尽)

编译通过...

├ 测试数据 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 条评论

  • @ 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

信息

ID
1514
难度
6
分类
其他 | RMQ 点击显示
标签
(无)
递交数
4990
已通过
1203
通过率
24%
被复制
3
上传者