查询最大值时小于等于1就可以直接return了吧
by eou2091 @ 2024-08-14 08:35:23
存了 `max` 就直接用啊。
by xudongyi1 @ 2024-08-14 08:38:24
@[eou2091](/user/942974) 的确是这样,改了之后还是会T。。。每个点只T0.1秒。。。
by hyjdouSHEN @ 2024-08-14 09:16:12
@[xudongyi1](/user/664034) 是这样吗?
```cpp
inline void update(int x,int l,int r){
if(tree[x].l==tree[x].r&&tree[x].l>=l&&tree[x].r<=r){
if(tree[x].maxx<=1) return;
tree[x].sum=sqrt(tree[x].sum);
tree[x].maxx=sqrt(tree[x].maxx);
return ;
}
int mid=(tree[x].l+tree[x].r)>>1;
if(l<=mid) update(ll(x),l,r);
if(r>mid) update(rr(x),l,r);
push_up(x);
}
```
by hyjdouSHEN @ 2024-08-14 09:21:27
@[hyjdouSHEN](/user/693228) 不是。
```cpp
inline void update(int x,int l,int r){
if(tree[x].maxx == 1) return ;
if(tree[x].l==tree[x].r&&tree[x].l>=l&&tree[x].r<=r){
tree[x].sum=sqrt(tree[x].sum);
tree[x].maxx=sqrt(tree[x].maxx);
return ;
}
int mid=(tree[x].l+tree[x].r)>>1;
if(l<=mid) update(ll(x),l,r);
if(r>mid) update(rr(x),l,r);
push_up(x);
}
```
by xudongyi1 @ 2024-08-14 09:26:12
@[hyjdouSHEN](/user/693228) 在querymax里判一下这个
by eou2091 @ 2024-08-14 09:26:12
不用 `querymax`,已经存进节点里面了啊.
by xudongyi1 @ 2024-08-14 09:26:50
```cpp
inline int querymax(int x,int l,int r){
if(tree[x].l>=l&&tree[x].r<=r) return tree[x].maxx;
if(tree[x].maxx<=1) return tree[x].maxx;
int res=0;
int mid=(tree[x].l+tree[x].r)>>1;
if(l<=mid) res=max(res,querymax(ll(x),l,r));
if(r>mid) res=max(res,querymax(rr(x),l,r));
return res;
}
``` @[hyjdouSHEN](/user/693228)
by eou2091 @ 2024-08-14 09:28:00
@[xudongyi1](/user/664034) 哦
by eou2091 @ 2024-08-14 09:29:10
@[hyjdouSHEN](/user/693228) [亲测已过](https://www.luogu.com.cn/record/172528383)
by xudongyi1 @ 2024-08-14 09:29:45