好家伙,我上来反手就一个暴力
思路:
在第n处获得了最高分
M(n) = max(M(n - 1), max(V(i) + i + V(n) - n)
其中 i 表示从0 ~ n-1
分为两部分:M(n - 1)表示没玩过的景点;后边按照题意可以分为两部分两处景点的头和尾,尾指定是个定值,那么关键就在0 ~ n - 1这一趴的最大值
令m(n - 1) = max(V(i) + i)
可以得到
m(n - 1) = max(m(n - 2), V(n - 1) + (n - 1))
从上边可以得到
res = max(res, tmp + values[i] - i);
tmp = max(tmp, values[i] + i);
完