为什么要while,只有一组数据啊
by K_layna @ 2023-08-04 16:35:40
@[xiaoxiaoxia](/user/677127) `updata` 函数出锅了,`else` 应该是 `if(y>mid)`
by TimeLimitEnough @ 2023-08-04 16:45:23
@[K_layna](/user/298878) 原题是多组数据。我只是来询问一下洛谷谷民
by xiaoxiaoxia @ 2023-08-04 16:45:30
@[xiaoxiaoxia](/user/677127) 多测没事,`scanf` 是有返回值的
by TimeLimitEnough @ 2023-08-04 16:46:30
@[dyyzy](/user/1052984) 这应该不影响吧,如果改了还是超时。
by xiaoxiaoxia @ 2023-08-04 16:47:10
@[xiaoxiaoxia](/user/677127) 能放一下原题吗
by TimeLimitEnough @ 2023-08-04 16:48:09
ok
by xiaoxiaoxia @ 2023-08-04 16:49:12
https://vjudge.net/contest/573342#problem/A
by xiaoxiaoxia @ 2023-08-04 16:49:25
query要改
```
int query(int l, int r, int id)
{
if(l<=a[id].l&&r>=a[id].r)
{
return a[id].m;
}
int mid=(a[id].l+a[id].r)/2;
int ans=0;
if(l<=mid)
{
ans=max(ans,query(l,r,id<<1)) ;
}
if(r>mid)
{
ans=max(ans,query(l,r,id<<1|1)) ;
}
return ans;
}
```
updata里l==r那部分要改,只有修改值大于当前值才要改
```
void updata(int x, int y, int id)
{
int l=a[id].l;
int r=a[id].r;
int mid=(l+r)/2;
if(l==r)
{
a[id].m=max(a[id].m,y);
return ;
}
if(x<=mid)
updata(x,y,id<<1);
else
updata(x,y,id<<1|1);
a[id].m=max(a[id<<1].m,a[id<<1|1].m);
}
```
已AC
by K_layna @ 2023-08-04 16:51:36
@[xiaoxiaoxia](/user/677127)
by K_layna @ 2023-08-04 16:54:03