蒟蒻的特殊A、B性质思路,求大佬看一下对不对
查看原帖
蒟蒻的特殊A、B性质思路,求大佬看一下对不对
680721
Misaka2298楼主2024/10/27 09:04

由于本蒟蒻在T1花了太久的时间(2h),T2只有时间做A,B性质,AB性质的样例都能过但是不太确定对不对,求各位大佬帮忙看一下。

首先来看A性质。

A性质的车做匀速运动,这样非常好判断是否超速,只需要将v与V比较即可。但是,如果车进入路段的位置后面没有测速仪,这辆车是不会被判定为超速的。由于v不变,我想到了:如果这辆车被(距离南入口)更近的测速仪拍到了,那它一定会被最远的测速仪拍到,所以其实前面的测速仪都没用,只需要保留最远的测速仪p[m-1]即可。

这样,我们就只需要考虑“要不要保留最远的测速仪”,定义一个bool变量a=ture(实际上赛场上我写了一个巨长的变量名,但是因为有codeblocks的补全其实还好。),每辆车先判断一下有没有超速,没有就判断下一辆车,有就判断是否在最远的测速仪判断范围内(d[i]<=p[m-1])(题目说了p0~m单调递增),在的话就把ans++,并且把a false掉(最远的测速仪已经被使用了,再关闭一定会漏车,所以无法关闭)。

最后只需要看一下a的情况即可,若ture则没有车超速,可关闭m个测速仪,若false则有车超速,可关闭m-1个测速仪。

(这里其实可以判断ans是否为0,但是无所谓了)

然后来看B性质。

B性质的车都是匀加,变复杂了一些。首先,如果车在前面的测速仪超速,因为a>0,那么中间加速一段到最远的测速仪更会被拍到超速(罚的钱估计更多了hh),所以与性质A一样,我们只需要考虑最远的测速仪即可。

首先,注意到留给这辆车的加速路程只有这辆车的进入路段点到最远的测速仪中间这一段(注意力惊人),即p[m-1]-d[i](最远的测速仪之后怎么加速都没用,因为已经拍不到了。),这样我们就可以根据题目中的式子求出来“车辆到达最远测速仪时的瞬时速度”maxv,与V判断一下即可,超速就ans++然后把a false掉,不超速就continue。

但这样还是做了一些无效判断,考虑剪枝。(这个算剪枝吗)

首先,如果车在比最远的测速仪更远的地方进入,那么他不管怎么样都测不到他超速,continue即可。 其次,如果他一进入路段就是超速状态(好勇),那么因为a>0,那么不管怎么加速他都会被拍到,直接ans++并且a=false即可。

这样做看起来已经能拿到40pts了,但是由于我们在计算中使用了根号,算出来的数有精度问题(在后来的测试中我也发现了,收卷前10min发现了这个精度问题然后改掉了,快夸我!),因为我们要判断maxv与V的关系,所以我们可以把两边同时平方,左边maxv的根号去掉,右边V*V,可以解决精度问题。

2024/10/27 09:04
加载中...