6-10wa(哭

P1253 扶苏的问题

pushdown2内不要把p的add1归零。 考虑先覆盖再加,你的pushdown2会把加的标记抹掉。
by UMS2 @ 2024-02-27 07:15:37


update1内覆盖时要将加的标记消除。 并且里面pushdown2可以删掉,你的pushdown1里面已经有了。
by UMS2 @ 2024-02-27 07:21:17


query里没有必要pushup,此外应该没啥问题 @[陈asuna](/user/572048)
by UMS2 @ 2024-02-27 07:23:30


优化的话可以把覆盖和加单独做成两个函数,这样 pushdown 和 update 的时候直接调用。 可以把 pushdown2 并到 pushdown1 里用两个 if 并列。 flag 和 add2可以写成一个,把 add2 默认值设置成 inf 就可以实现。
by UMS2 @ 2024-02-27 07:29:32


build 里面,应该是要到 l==r 时再赋值,不应该直接赋值。 ```cpp void build(int k,int l,int r){ line[k].l=l,line[k].r=r; line[k].upt=inf; if(l==r){ line[k].val=w[l]; return; } int mid=l+r>>1; build(k<<1,l,mid); build(k<<1|1,mid+1,r); kp(k); } ```
by UMS2 @ 2024-02-27 07:35:57


@[UMS2](/user/730828) 感谢大佬,已经AC!其实最后那个op==3写错了,应该是printf("%lld\n"...),改了前头忘改后头了
by 陈asuna @ 2024-02-27 11:45:24


|