https://vjudge.net/contest/261263#problem/B(题目链接)
因为一秒可以走1或2步或不走。
我们可以看成半秒走1步或不走。
dp[i]表示接到第i块饼时最大的分数值
现在有两块饼它们下落的时间为ti,tj,位置为pi,pj;
假设ti > tj;
只有ti - tj >= |pi - pj| 时dp[j]可以转移到dp[i];
当pi > pj 时 ti -tj > pi - pj
ti - pi > tj - pj;
当pi < pj 时 ti -tj > pj - pi
ti + pi > tj + pj;
当pi > pj , ti -tj > pi - pj时 pj - pi < 0 , ti - tj > pj - pi;
当pi < pj , ti -tj > pj - pi时 pi - pj<0, ti -tj > pi - pj ;
所以dp[j]可以转移到dp[i]的条件是
ti + pi > tj + pj;并且ti - pi > tj - pj;
这是个二维偏序问题
我们把v1 看成 ti + pi, 把v2看成ti - pi
把v1看成第一维从小到大排序,v2 看成第二维用数据结构维护
先把v2离散化
在把所有饼按v1从小到大排序,再在以离散化后的v2为下标,dp为值的一棵值域线段树(我写的树状数组)上找能更新到这个点的最大的dp值。
树状数组维