zoukankan      html  css  js  c++  java
  • HDU 3400

    果然是你存我我深深的脑海里,思路有了,调了那么久,进水了。。。

    三分一边后,嵌套三分另一边。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    using namespace std;
    const double eps=1e-6;
    
    struct Point{
    	double x,y;
    };
    
    Point a,b,c,d;
    double p,q,rr;
    
    double how(Point dont,Point dot){
    	double ans1=sqrt((dot.x-d.x)*(dot.x-d.x)+(dot.y-d.y)*(dot.y-d.y))/q	;
    	double ans2=sqrt((dont.x-dot.x)*(dont.x-dot.x)+(dont.y-dot.y)*(dont.y-dot.y))/rr;
    	return ans1+ans2;
    }
    
    double cal(Point dont){
    	Point l,r,m,mm;
    	l=c,r=d;
    	while(sqrt((l.x-r.x)*(l.x-r.x)+(l.y-r.y)*(l.y-r.y))>=eps){
    			m.x=(l.x+r.x)/2;
    			m.y=(l.y+r.y)/2;
    			mm.x=(m.x+r.x)/2;
    			mm.y=(m.y+r.y)/2;
    		if(how(dont,m)>how(dont,mm))
    		l=m;
    		else r=mm;
    	}
    	double lt=sqrt((dont.x-a.x)*(dont.x-a.x)+(dont.y-a.y)*(dont.y-a.y))/p;
    	return how(dont,l)+lt;
    }
    
    int main(){
    	int T;
    	scanf("%d",&T);
    	while(T--){
    		scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y);
    		scanf("%lf%lf%lf%lf",&c.x,&c.y,&d.x,&d.y);
    		scanf("%lf%lf%lf",&p,&q,&rr);
    		Point l,r,m,mm;
    		l=a; r=b;
    		while(sqrt((l.x-r.x)*(l.x-r.x)+(l.y-r.y)*(l.y-r.y))>=eps){
    			m.x=(l.x+r.x)/2;
    			m.y=(l.y+r.y)/2;
    			mm.x=(m.x+r.x)/2;
    			mm.y=(m.y+r.y)/2;
    			if(cal(m)>cal(mm))
    			l=m;
    			else r=mm;
    		}
    		printf("%.2lf
    ",cal(l));
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    1-27 awk 基本使用
    计算机网络(一)带宽
    CRC检错技术原理
    Wireshark漫谈(一)
    SQL字符串拼接
    MySQL学习笔记(二)
    MySQL学习笔记(一)
    Java 反射机制(二)
    Java 反射机制(一)
    Windows使用MySQL数据库管理系统中文乱码问题
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4274069.html
Copyright © 2011-2022 走看看