正解:贪心
解题报告:
这题似乎是可以二分水过的,,,但数据可以加强一下就能简单把二分卡住了,或者修改下空间限制什么的反正就很容易能卡住
所以这里介绍一个优秀的贪心做法,O(n)的时间复杂度和O(1)级别的空间复杂度就很美
首先二分还是能get的趴?就二分一个mid,对前面就能加就加对后面就能减就减,然后就做完了
这时候我们考虑一下二分出的这个mid的本质是什么?就是对每个数,它本来的取值只能是a[i],现在通过这个mid的存在,它可以取[a[i]-d,a[i]+d]范围内的所有值了,就相当于是对应一个区间了
然后题目就变成了,给一个若干条竖直块构成的图形,问从最左边开始走能否不向下一路走到最右
显然最低的要求就只要有一条平直的线能经过就欧克了,所以就只要最低点的最高和最高点的最低在同一高度就好,所以就
{x-mid}max={x+mid}min
可得mid=(xmax-xmin)/2
大概这样儿,over!
哦注意一下就是我重看一遍我题解发现我有个地方表述不清,,,就是这里的minmax因为其实是说以某个点为分界线的左边的max和右边的min,然后把这个算出来的答案再取个max,然后在实际实现中只要递推过程中更新一下max,计算以当前点为min的贡献,取max就好!
over
放个代码嘻嘻,真的难得一发过了,好爽昂QAQ