蒟蒻求调!线段树(?)T了三个点#7,10,11

P4145 上帝造题的七分钟 2 / 花神游历各国

查询最大值时小于等于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


| 下一页