疯狂线段树90pts求调

P1253 扶苏的问题

@[sansesantongshun](/user/866613) 数组开小了好像 https://www.luogu.com.cn/record/155635065
by ilibilib @ 2024-04-13 13:57:46


@[ilibilib](/user/1039659) A了,但为啥小了啊,不是 $10^6$ 吗
by sansesantongshun @ 2024-04-13 16:37:30


@[sansesantongshun](/user/866613) $\log_2 1000000 \approx 19.931$ 线段树数组好像要开 `4*(1<<20)` 的样子
by ilibilib @ 2024-04-13 16:49:53


发现原因了,的确线段树开4倍就行,这道题1e6的数据4e6+5的空间不行的原因是因为没有考虑push_down时,当前节点是不是叶子节点,因为增加操作时,需要先下传覆盖标记,这个时候如果是叶子,也会下传,那么需要的空间就会更大,加一个判断,是叶子就不用下传,空间4e6+5就足够了
by lhp964515118 @ 2024-04-30 11:01:40


@[lhp964515118](/user/995703) 但是叶子结点一定直接返回不会下传
by sansesantongshun @ 2024-05-06 21:44:09


@[sansesantongshun](/user/866613) 在增加区间值的时候,需要先判断这个区间是否被修改为固定值了,这个时候,如果该区间是叶子节点,那也会去判断是否被修改为固定值,也就是你的modify2中,还是会调用cover函数,那这个时候,cover就会越界
by lhp964515118 @ 2024-05-08 11:22:01


@[lhp964515118](/user/995703) 加一个if判断l<r时再cover就行了
by lhp964515118 @ 2024-05-08 11:23:00


|