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

传送门
这是一道困饶了我一年的题。
其实就是去年去NOIP提高组试水的时候考的模拟题
但当时我水平不够,跟 y k yk yk一起杠了一个下午都没调出来。
今天终于 A A A了。
其实就是一个维护最长连续 01 01 01串的变形。
分几种情况讨论下就行。
我们令最长子段的左右端点为 l , r l,r l,r

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

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值