设$f[i][j][k]$为到达$(i,j)$,用时为$\frac{k}{5lcm}$小时的最低耗油量,然后DP即可。
#includeconst int N=12,M=210005;const double inf=1e15;int n,L,lcm,lim,i,j,k,p,x,y,a[N],b[N],xs,ys,xt,yt,t1,t2,ans1=-1,ans2;double f[2][N][M],w[N];int gcd(int a,int b){return b?gcd(b,a%b):a;}void swap(int&a,int&b){int c=a;a=b;b=c;}inline void up(double&a,double b){if(a>b)a=b;}int cal(int x){ x*=12; return x/lcm+(x%lcm>0);}int main(){ scanf("%d%d",&n,&L); for(i=1;i<=10;i++)w[i]=1.0*L/(80.0-0.75*i*i); for(i=1;i<=n;i++)scanf("%d",&a[i]),a[i]/=5; for(i=1;i<=n;i++)scanf("%d",&b[i]),b[i]/=5; for(i=1;i<=n;i++){ if(x xt)swap(xs,xt),swap(ys,yt); if(ys>yt){ for(i=1,j=n;i =t1*lcm&&f[p^1][yt][k]