黑白博弈
- 题目
- 分析
- 代码
题目

题目链接:黑白博弈
分析
首先我们通过读题:单点修改、查询很容易发现这道题可以用线段树解决,既然决定了用线段树解决,那么我们需要确定以下几个要素:
1:使用线段树维护什么?
2:如何通过线段树维护的数据获得我们需要的答案?
Question1:
我们需要用利用线段树维护什么?
通过题目要求我们得知在进行查询操作时需要查询的数据是当前白块区间所有连续的白块数量,也就是说只要知道了该白块区间两端的黑块下标,我们就可以通过这两个黑块下标计算得出该区间的白块个数。
那么——如何通过查询得到目标白块所处区间两端的黑块下标呢?
这就是我们线段树要维护的数据了:该区间中黑块下标的最大值与最小值。(还有不懂的小伙伴请看下面的图示分析)
假设有长度为5的白块(初始状态全为白块)
我们将其(白块)最大值赋值为负无穷大(下面以INFF代替),最小值则赋值为正无穷大(下面以INFZ代替)前者为最大值,后者为最小值

最低0.47元/天 解锁文章
13万+





