数学,递推。
不知道有没有更加神奇的做法,我是这样想的:
首先,如果多边形完全在$y$轴左侧,那么答案为$\frac{w}{u}$。
剩下的情况就要先判断是否能在车开过之前跑过去,如果跑不过去,要在车慢慢开过$y$轴的时候,一起慢慢跑上去。
那么先来判断是否能在车开过之前跑过去:
如上图所示,如果要在车来车前跑过去,那么等价于要求:对于凸包左侧蓝色链上的每一个点$L[i]$,满足$\frac{
{L[i].y}}{u} ≤ \frac{
{L[i].x}}{v}$,即人要比点先到。如果有一个点不满足,那么就人就无法在车来前跑过去。如果可以的话,答案为$\frac{w}{u}$。
剩下的情况就是凸包右侧黄色链开过$y$轴时,人同时走上去。这种情况的答案,递推一下就能算出来了,如果人走到$(0,R[i].y)$所花的时间为$ans$,那么人走到$(0,R[i+1].y)$的时间$ans$更新为$\max (ans + \frac{
{\left( {R\left[ {i + 1} \right].y-R\left[ i \right].y } \right)}}{u},\frac{
{R[i].x}}{v})$,想一想也能想明白吧~
#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include