题目描述
在草场上有一条直线,直线上有若干个目标点。每个目标点都有一个分值和一个坐标。现在你可以选择其中任意一个目标点开始跳,只能沿一个方向跳,并且必须跳到另一个目标点。且每次跳的距离都不能少于上一次的距离。请问你能得到的最大分值是多少?
输入
第一行一个整数N(1<=N<=1000).接下来从第二行到第N+1行,每一行包含两个整数x(i)和p(i),每个整数在区间[0,1000000]之间。
输出
输出格式:最大能获得的分值。
样例输入
6
5 6
1 1
10 5
7 6
4 8
8 10
样例输出
25
题解
设f[i][j]为 是从第j个点跳到第i个点的,跳到第i个点,得到的最大分值,则
(j在中间,k、i在两侧)
所以这个要先按坐标排序。
现在假设j不变,在合法的情况下,在j+1~n找一个i,再找出最小的k(记作t),找出最优的k,用smax记录其f[j][k]。设当i为ii时,k为kk,在t~kk中找到最优的f[j][k],smax=max(smax,f[j][k]),t=kk,f[ii][j]=smax+p[i]。
但需要注意的是,题目中说了开始可以选择任意方向跳,所以有两种情况,i在左侧,i在右侧。
i在右侧参考: