• 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
    ",cal(la,lb));
    	return 0;
    }
    /*
    0 0 0 100
    100 0 100 100
    2 2 1
    */
    

      

    1857: [Scoi2010]传送带

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 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


    Sample Output

    136.60

    HINT

    对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000
    1<=P,Q,R<=10

    Source

    [Submit][Status][Discuss]
  • 相关阅读:
    2016.6.21 -Dmaven.multiModuleProjectDirectory system propery is not set,Check $M2_HOME environment variable and mvn script match.
    2016.6.21 maven:Failure to transfer ... from ....
    2016.7.5 如何在maven中添加所需依赖(只知道jar包的部分名字的情况)
    2016.6.20 maven更改repository的位置
    2016.6.20 maven下载与安装步骤
    2016.6.20 在Eclipse配置Tomcat服务器的步骤
    2016.6.21 eclipse配置server locations时按钮为灰色
    2016.6.21 将Eclipse中项目部署到tomcat下
    2016.6.20 tomcat安装出现No Java Virtual Machine found in..
    vue小荔枝,时间控件,动态按月份增减。
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5901521.html
Copyright © 2020-2023  润新知