首页 > 代码库 > bzoj1857: [Scoi2010]传送带
bzoj1857: [Scoi2010]传送带
三分套三分。。。其实直接看代码理解就可以了。
发现的新bug:(x,y,a,b)/p 这样的c++语句是合法的,我也不知道为什么,然后因为这一个我调了一节晚自修。。。药丸药丸!
#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>#include<cmath>using namespace std;#define rep(i,s,t) for(int i=s;i<=t;i++)#define dwn(i,s,t) for(int i=s;i>=t;i--)#define clr(x,c) memset(x,c,sizeof(x))int read(){ int x=0,f=1;char c=getchar(); while(!isdigit(c)) { if(c==‘-‘) f=-1;c=getchar(); } while(isdigit(c)) x=x*10+c-‘0‘,c=getchar(); return x*f;}const int inf=0x7f7f7f7f;const double eps=1e-3;double au,av,bu,bv,cu,cv,du,dv;double p,q,r;double dis(double a,double b,double x,double y){ return sqrt((x-a)*(x-a)+(y-b)*(y-b));}double cal(double a,double b){ double la=cu,lb=cv,ra=du,rb=dv,xa,ya,xb,yb,ta,tb,orz,tmp; while(fabs(ra-la)>eps||fabs(rb-lb)>eps){ orz=(ra-la)/3;tmp=(rb-lb)/3; xa=orz+la,ya=tmp+lb; xb=orz*2+la,yb=tmp*2+lb; ta=dis(xa,ya,a,b)/r+dis(xa,ya,du,dv)/q; tb=dis(xb,yb,a,b)/r+dis(xb,yb,du,dv)/q; if(ta>tb) la=xa,lb=ya; else ra=xb,rb=yb; } return dis(au,av,a,b)/p+dis(la,lb,a,b)/r+dis(la,lb,du,dv)/q;}int main(){ au=read(),av=read(),bu=read(),bv=read(); cu=read(),cv=read(),du=read(),dv=read(); p=read(),q=read(),r=read(); double la=au,lb=av,ra=bu,rb=bv,xa,ya,xb,yb,ta,tb,orz,tmp; while(fabs(ra-la)>eps||fabs(rb-lb)>eps){ orz=(ra-la)/3;tmp=(rb-lb)/3; xa=orz+la,ya=tmp+lb; xb=orz*2+la,yb=tmp*2+lb; ta=cal(xa,ya);tb=cal(xb,yb); if(ta>tb) la=xa,lb=ya; else ra=xb,rb=yb; } printf("%.2lf\n",cal(la,lb)); return 0;}/*0 0 0 100100 0 100 1002 2 1*/
1857: [Scoi2010]传送带
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1191 Solved: 642
[Submit][Status][Discuss]
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
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
bzoj1857: [Scoi2010]传送带
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。