MyException - 我的异常网
当前位置:我的异常网» 编程 » 宁波市工程学院 OJ [1347] 老虎满坡找灰兔

宁波市工程学院 OJ [1347] 老虎满坡找灰兔

www.MyException.Cn  网友分享于:2013-03-07  浏览:13次
宁波工程学院 OJ [1347] 老虎满坡找灰兔
  • http://ac.nbutoj.com/Problem/view.xhtml?id=1347

    [1347] 老虎满坡找灰兔

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 老虎最近遇到一个很麻烦的问题, 有人叫他把一个五边形用一条直线分成两个三角形.
    这个五边形如下图所示, 该五边形其实是一个矩形截去一个角. 所以有三个直角. 和两个钝角.


    老虎就到处找兔子来解决这个问题. 兔子呢就拿出来一把刷子, 一条粗粗的直线. 然后两个三角形就很神奇的出来了.



    兔子突然想到一个问题, 要怎么刷才能使刷过的面积最小.

    现在, 我们以五边形的两条边做坐标系, 如下图所示

  • 输入
  • 本题有多组输入, 每组输入A和B的坐标. Ax, Ay, Bx, By 四个整数.
    对于每组数据满足 0 < Ax < Bx 且 0 < By < Ay
  • 输出
  • 对于每组输入, 输出在五边形上刷过的最小面积. 保留2位小数.
  • 样例输入
  • 1 2 2 1
    
  • 样例输出
  • 2.25
  • 提示
  • 来源
  • monkeyde17
    
    
    
    
    思路:
    要是刷子刷的面积最小  即划出的2个三角形的面积为s1+s2最大  
    设刷子刷到x轴上的位置为(a,0)  
    那么着时候刷子划到y轴上的点也可以用a表示出来了
    这时候就可以求出s1+s2 为一个与a有关的式子
    把和与a有关的式子提取出来之后 可以发现  当这个 式子<0的时候 a越小面积越大  当式子大于0的时候 a越大越好 
    那么当式子小于0  则a=0最好   即刷子下边缘正好切进左下角     当式子大于0  刷子上边缘正好切进左下角 这时候a最大
    
    
    用总面积减去s1 s2  就是最小的阴影面积
    #include<stdio.h>
    int main()
    {
    	double xa,ya,xb,yb;
        double  smax,ans1,ans2;
    	double x,y;
    	while(scanf("%lf %lf %lf %lf",&xa,&ya,&xb,&yb)!=EOF)
    	{
    		smax=ya*xb-0.5*(xb-xa)*(ya-yb);
              // if(xa*(ya-yb)-yb*(xa-xb)<0)//a最小
    		   //{
    
                       y=ya-(xa*yb)/xb;
    				   ans1=smax-0.5*xa*(ya-y);
    				   ans1=ans1-0.5*xb*yb;
    				  //printf("   %.2lf\n",ans);
    		  // }
    		  // else
    		  // {
                       x=xb-((xa*yb)/ya);
    				   ans2=smax-0.5*xa*ya;
    				   ans2-=0.5*yb*(xb-x);
    		  // }
    				   printf("%.2lf\n",ans1<ans2?ans1:ans2);
    	}
    	return 0;
    }


    
    
    
    
  • 文章评论

    软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有