zoukankan      html  css  js  c++  java
  • 牛栓绳

    牛栓绳

    半个月之前Alice买了一些竹竿,现在又买了一头牛。Alice为了防止牛逃跑,用竹竿做一根拴牛的桩子,并用一条绳子把牛拴在桩上。这条绳子不能太长,不然牛可能进到Alice的矩形庄稼地里吃掉农作物。所以Alice要把拴牛绳剪成合适的长度。

    在坐标系中,坐标(x,y)表示拴牛桩的位置。用左下角顶点(x1,y1)和右上角顶点 (x2,y2)所围矩形表示Alice的庄稼地。给出三个坐标,分别表示拴牛桩、庄稼地左下角、庄稼地右上角的位置,请你计算使牛不能进入庄稼地的拴牛绳最大长度。
    输出允许误差0.01

    数据输入

    6个以空格分开的整数,分别表示 x y x1 y1 x2 y2

    所有输入数字都是[-999,999]范围内的整数.
    题目保证x1≤x2 且y1≤y2
    题目保证栓牛桩不在矩形庄稼的区域内

    数据输出

    输出格式
    输出只有一行,一个浮点数表示拴牛绳的最大长度

    样例1

    输入样例

    7 3 0 0 5 4
    

    输出样例

    2.0
    

    样例2

    输入样例

    6 0 0 2 7 6
    

    输出样例

    2.0
    

    样例3

    输入样例
    3 -4 -3 -1 -1 2
    输出样例
    5.0

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 100
    #define eps 1e-8
    #define zero(x)(((x)>0?(x):-(x))<eps)
    
    struct point{
    	double x,y;
    };
    struct line{
    	point a,b;
    };
    double xmult(point p1,point p2, point p0){
    	return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
    } 
    double distance(point p1, point p2){//两点之间的距离 
    	return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));//绝对值 
    }
    double disptoline(point p, line l){//点到直线的距离 
    	return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b);
    } 
    int main(void){
    	point t,a,b,c,d;
    	double dis_temp=0.0,dis=0.0;
    	cin>>t.x>>t.y>>a.x>>a.y>>c.x>>c.y;
    	d.x=a.x;
    	d.y=c.y;
    	b.x=c.x;
    	b.y=a.y;
    //	line dvjc={a,c};
    //	dis=disptoline(d, dvjc);
    //	dis_temp=disptoline(t, dvjc);
    	if(a.x<=t.x && t.x<=c.x)
    		dis=min(fabs(t.y-a.y),fabs(t.y-c.y));
    	else if(a.y<=t.y && t.y<=c.y)
    		dis=min(fabs(t.x-a.x),fabs(t.x-c.x));
    	else if(t.x<a.x){
    		if(t.y>c.y)
    			dis=distance(t,d);
    		else
    			dis=distance(t,a);
    	}
    	else {
    		if(t.y>c.y)
    			dis=distance(t,c);
    		else 
    			dis=distance(t,b);
    	}
    	printf("%.1f",dis);
    	return 0;
    }
    
    
  • 相关阅读:
    大数据时代下的隐私保护(二)
    互联网+究竟想干什么
    MySql触发器使用解说
    系统函数C字符串的实现(12):strset
    參加湛江新教育群线下活动有感
    Axure多人协作
    hdu (1556 树状数组)
    [leetcode]Subsets II
    Oracle insert all语句介绍
    JQuery 实现锚点链接之间的平滑滚动
  • 原文地址:https://www.cnblogs.com/lingr7/p/10521432.html
Copyright © 2011-2022 走看看