一直知道OI会出数学题 没想到还有物理题 物理差成渣
什么光路最速原理
折射角sin之比等于速度比什么的
知道这个然后二分答案就好了
#include<cstdio>
#include<cmath>
#include<algorithm>
#define PI acos(-1.0)
#define eps 1e-12
using namespace std;
inline char nc()
{
static char buf[100000],*p1=buf,*p2=buf;
if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }
return *p1++;
}
inline void read(int &x)
{
char c=nc(),b=1;
for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;
for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;
}
const int N=105;
int n,X;
int h[N],v[N];
double ans;
inline double F(double now){
double ret=0; ans=0;
for (int i=1;i<=n;i++){
ret+=(double)h[i]/tan(now);
ans+=(double)h[i]/sin(now)/v[i];
now=PI/2-asin(sin(PI/2-now)*v[i+1]/v[i]);
}
return ret;
}
int main()
{
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
read(n); read(X);
for (int i=1;i<=n;i++) read(h[i]);
for (int i=1;i<=n;i++) read(v[i]);
double L=0,R=PI/2,MID;
while (R-L>eps)
if (F(MID=(L+R)/2)<=X)
R=MID;
else
L=MID;
printf("%.3lf\n",ans);
return 0;
}