首先可以把题目转换为一个直角坐标系:
然后如果不停留,那么就是一条y=x的直线,其中在直线下方的t[i]且i<=T的都可以被吃掉。
如果在i号地方停留了t seconds 那么直线就会在x=i的地方上移t,大概如下:
可以贪心考虑,如果在后面停留不如在前面,因为这样可以框进去更多位置 。
所以直接将 y=x 换成 y=x+b
(假设在第一个位置停留。)
这样把所有地方的停留全部转化为0号点的停留。
就可以枚举y= t 时x的位置,也就可以算出b.
最后再算出多少个t[i]在这条直线的下方,且i+b<=T.
In O(n log n).
Attention :
1.
由于只可以向前走,所以b>=0
2.
最后一步走到i,不可以吃在i处的食物,所以这点需要注意!尝试自己解决这种情况。As an exercise.