1857: [Scoi2010]传送带
Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R Output 输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位 Sample Input 0 0 0 100 100 0 100 100 2 2 1 Sample Output 136.60 HINT 对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000 1<=P,Q,R<=10 Source Day2
/*三分套三分.比较显然的凸形函数.凸性函数套凸性函数应该还是凸性函数吧....不会证明.别忘了讨论斜率为0的情况....*/#include#include #include #define MAXN 10001#define eps 1e-9using namespace std;double ax,ay,bx,by,cx,cy,dx,dy,P,Q,R,ans;double Cola(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}double sanfenfuben2(double x,double y)//CD无斜率.{ double mid,midmid,k,t1,t2,l,r; l=min(cy,dy),r=max(cy,dy); while(l+eps >ax>>ay>>bx>>by>>cx>>cy>>dx>>dy; cin>>P>>Q>>R; ans=Cola(ax,ay,dx,dy)/R; if(ax!=bx) sanfen1(); else sanfenfuben1(); printf("%.2lf",ans); return 0;}