题意
给机器人$n$个操作,每个操作有一个$t_i$和一个$x_i$,意为在$t_i$时刻,会下令让机器人去往$x_i$。
机器人最初在$0$位置,其速度为每秒$1$单位,如果其在移动过程中被下令,它会忽视这个命令。
如果在$[t_i,t_{i+1}]$中任意时刻其到达了$x_i$,那么第$i$个命令视为有效的(注意$t_{n+1}=+\infty$),问有多少个有效的命令。
分析
看题就可以知道是一个模拟,假设机器人现在位置是$prex$,现在的时间是$pret$,那么对于第$i$号指令来说
- 如果$t\leq t_i$,那么它会执行这个指令,会在$pret+abs(x_i-x)$时刻到达$x_i$处,花费时间为$abs(x_i-x)$,且在$[pret,pret+abs(x_i-x)]$过程中,它会忽视这个指令,那么我们可以将当前时间$t$视为$pret+abs(x_i-x)$,其目的地为$x$。
- 如果$t>t_i$,那么它会忽视这个指令。
考虑统计答案
- 如果$t\leq t_i$,那么如果其到达了$x$还没有接到下一个命令,即$t_i+abs(x_i-x)\leq t_{i+1}$,那么该命令有效。
- 如果$t>t_i$,那么首先得保证$x_i$在$prex$到$x$的路上,其次注意到到达$x_i$的时间为$pret+abs(x_i-prex)$,按照题意,如果其时间在$[t_i,t_{i+1}]$间,那么该命令有效。
1 |
|