NC20276. [SCOI2010]传送带
描述
输入描述
输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy第三行是3个整数,分别是P,Q,R
输出描述
输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位
示例1
输入:
0 0 0 100 100 0 100 100 2 2 1
输出:
136.60
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 504K, 提交时间: 2023-07-12 20:20:14
#include<iostream> #include<bits/stdc++.h> using namespace std; int n=99; double dis(double x1,double x2,double y1,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } int main () { double ax,ay,bx,by,cx,cy,dx,dy,p,q,r; cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>p>>q>>r; double ans=1e9; for(int i=0;i<=n;i++) { double x=(bx-ax)*i/n+ax; double y=(by-ay)*i/n+ay; for(int j=0;j<=n;j++) { double xx=(dx-cx)*j/n+cx; double yy=(dy-cy)*j/n+cy; double t=dis(ax,x,ay,y)/p+dis(x,xx,y,yy)/r+dis(xx,dx,yy,dy)/q; ans=min(t,ans); } } printf("%.2lf",ans); }