首先先看题目,大意就是找到摄像头能拍到的超速的车的个数和保证还能拍到原先能拍到的超速的车的情况下能够删除的摄像头的最大个数,要注意只有在速度大于VVV时才算超速,且只有在到达摄像头位置是才能被拍到
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
写代码时我们要先清楚怎么计算当前车速,没有学过的可以看题目最下面的提示
其中:v=v02+2∗a∗sv=\sqrt{v_0^2+2*a*s}v=v02 +2∗a∗s 是我们需要用到的
那么判断条件就是v02+2∗a∗s>V\sqrt{v_0^2+2*a*s}>Vv02 +2∗a∗s >V,但是这个式子里面有根号,容易产生误差,这个时候我们习惯两边同时平方
所以最终的判断条件就是v02+2∗a∗s>V2v_0^2+2*a*s>V^2v02 +2∗a∗s>V2
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
直接写是不太现实的,所以我们要先观察特殊性质,发现A保证加速度为0
那这种情况下,我们就只需要判断v0v_0v0 是否大于VVV就行了,因为速度不会改变,那么摄像头只需要保留最北端也就是最后一个摄像头就一定能拍到所有超速的车了,所以这个时候能删除的最大的摄像头数就是m−1m-1m−1(不过也有特殊情况,如果没有一辆车超速那么答案就是mmm)
再看性质B,保证加速度大于0,
这个时候速度不断增大,那么同样的最后一个摄像头能拍到所有的超速车辆,不过这个时候需要计算到达最后一个摄像头的速度
前两个性质代码实现都较简单,但如果加入加速度小于0的情况就变得稍微有点复杂了
我们可以通过记录每个超速的车超速的时间范围(也就是摄像头需要拍到的范围)然后就可以按照最右边的范围来排序最后模拟一遍就完成了