题解 P1083 【借教室】

本文是作者第二道线段树练习题分享。推荐了线段树入门题,介绍多种做法,如45分暴力法手动模拟,100分差分+树状数组,还有不同分数的线段树做法,包括错误思路及修正,也提到100分二分是正解,最后给出代码转载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我的第二道线段树的练习题。又是一天半,我太菜了。

菜=CAI=Can't AK IOI

先给你们推荐一批线段树入门题

好了,然后再来说说做法。

45分暴力

这个因该不要讲了吧,手动模拟呀。

100分差分+树状数组

大家可以去看一看这题,就明白什么是差分+树状数组的做法了。

那题甚至可以卡掉线段树

5分线段树

我的奇葩做法

首先,把每一天当成一个要维护的值。

然后,构建出一颗线段树。

再接着,每一个订单就是一个区间减法,打标记,下传。

下传的时候只要有任意节点的data小于0,标记,再输出。

显然是个错的。

但是不知道为什么还能过一个点。

但是如果您想到了这种做法,并意识到了错误,那么您离成功已经不远了。

95分线段树

不要脸感谢mrsrz指出

首先,我们要知道上面的做法错在应该统计区间最小值,而不是区间任意值!!!

而且,我们知道对于一整个区间减C,最小值也会减C

那么,我们每次修改完成后对于一整个区间进行统计最小值不久好了吗?

那么思路是:先打上标记,down,左右区间递归,up

其中down是标记下传操作,upmin值更新操作。

想一想,min为什么是up而不是down?

然后就去写代码吧!

遗憾的是,有一个点被卡了。

100分线段树+卡常

你可以去读入优化,register,等等等等。

也可以点击提交上方的一个标签。

100分二分

二分才是本题的正解,但是我没有去尝试。

有兴趣的同学可以都试一试呀!

都试一试,总是有好处的!

代码

你想的太美了。

9552fb97479f2868a8a3dba14bfd6805b2eeff32

转载于:https://www.cnblogs.com/Garbage-Only-one/p/11170101.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值