WA on #3#4求调
查看原帖
WA on #3#4求调
1035597
CandaaGoose_imkdldw楼主2024/9/11 11:16
//#pragma GCC optimize (2)
#include<bits/stdc++.h>
#define int long long
using namespace std;
const double dps=1e-8;
double ax,ay,bx,by,cx,cy,dx,dy,p,q,r,d1,d2;
inline double dist(double a,double b,double c,double d)
{
	return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
inline double f2(double k1,double k2,double x,double y)
{
	return dist(k1,k2,x,y)/r+dist(x,y,dx,dy)/q;
}
inline double f1(double k1,double k2)
{
	double lx=cx,ly=cy,rx=dx,ry=dy;
	while((dist(lx,ly,rx,ry))>=dps)
	{
		double deltax=(rx-lx)/3,deltay=(ry-ly)/3;
		double lmx=lx+deltax,lmy=ly+deltay,rmx=rx-deltax,rmy=ry-deltay;
		if(f2(k1,k2,lmx,lmy)-f2(k1,k2,rmx,rmy)<dps)rx=rmx,ry=rmy;
		else lx=lmx,ly=lmy;
	}
	return f2(k1,k2,lx,ly);
}
signed main()
{
	cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>p>>q>>r;
//	printf("%0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf %0.2lf ",ax,ay,bx,by,cx,cy,dx,dy,p,q,r);
//	d1=dist(ax,ay,bx,by);d2=dist(cx,cy,dx,dy);
	double lx=ax,ly=ay,rx=bx,ry=ay,k;
	while((dist(lx,ly,rx,ry))>=dps)
	{
		double deltax=(rx-lx)/3,deltay=(ry-ly)/3;
		double lmx=lx+deltax,lmy=ly+deltay,rmx=rx-deltax,rmy=ry-deltay;
		if(f1(lmx,lmy)+dist(ax,ay,lmx,lmy)/p-(f1(rmx,rmy)+dist(ax,ay,rmx,rmy)/p)<dps)rx=rmx,ry=rmy;
		else lx=lmx,ly=lmy;
	}
	printf("%0.2lf\n",f1(lx,ly)+dist(ax,ay,lx,ly)/p);
    return 0;
}

根据其他oj的数据,错误数据的两线段其中一个端点相同。

但我是真找不出来了QAQQQ

2024/9/11 11:16
加载中...