2018.11.02 NOIP训练 停车场(线段树)

时间:2021-03-05 09:14:09

传送门

这是一道困饶了我一年的题。

其实就是去年去NOIP提高组试水的时候考的模拟题

但当时我水平不够,跟ykykyk一起杠了一个下午都没调出来。

今天终于AAA了。

其实就是一个维护最长连续010101串的变形。

分几种情况讨论下就行。

我们令最长子段的左右端点为l,rl,rl,r

  1. l=1l=1l=1,直接停在111号点。
  2. r=nr=nr=n,直接停在nnn号点。
  3. 最长子段在中间,根据题目的定义,这个时候根据题目定义它的到两边的长度应该是r−l+22\frac {r-l+2} 22r−l+2​,而从令左端开始的连续000长度为LLL,右端开始的为RRR,它们到附近第一辆车的长度为L,RL,RL,R,因此我们需要比一比这三个亮的大小,这还没完,如果是r−l+22\frac{r-l+2} 22r−l+2​最大的话,我们需要寻找左端点下标最小且长度为r−l+1r-l+1r−l+1的一个区间,然后令其中点成为答案,因为虽然len[3,3]&lt;len[5,6]len[3,3]&lt;len[5,6]len[3,3]<len[5,6],但它们距离最近一辆车的长度是相同的,因此要选333而不是555。

代码