zoukankan      html  css  js  c++  java
  • poj 1039

    哎~~~~~~~~~~~~

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    using namespace std;
    const int maxn=25*2;
    const double eps=1e-8;
    struct Point
    {
    	double x,y;
    };
    int n;
    double maxv;
    Point up[maxn],bottom[maxn];
    struct Line{
        double a, b, c;
    };
    double cross(Point a,Point b,Point c,Point d)
    {
    	return (b.x-a.x)*(d.y-c.y)-(b.y-a.y)*(d.x-c.x);
    }
    Line getLine(Point p1, Point p2){
        Line tmp;
        tmp.a = p1.y - p2.y;
        tmp.b = p2.x - p1.x;
        tmp.c = p1.x*p2.y - p2.x*p1.y;
        return tmp;
    }
    int judge(Point a,Point b,int lim)
    {
    	int i,j;
    	int way;
    	for(i=0;i<n-1;i++)
    	{
    		if(cross(b,a,b,up[i])>eps||cross(b,a,b,up[i+1])>eps)
    		{
    			way=1;
    			break;
    		}
    		if(cross(b,a,b,bottom[i])<-eps||cross(b,a,b,bottom[i+1])<-eps)
    		{
    			way=2;
    			break;
    		}
    	}
    	if(i==n-1) return 1;
    	if(i<lim) return 0;
    	Line l1,l2;
    	 l1 = getLine(a, b);
        if(way== 1) l2 = getLine(up[i], up[i+1]);
        else l2 = getLine(bottom[i], bottom[i+1]);
        maxv = max(maxv, (l1.b*l2.c-l2.b*l1.c)/(l1.a*l2.b-l2.a*l1.b));
        return 0;
    }
    int main()
    {
    	while(scanf("%d",&n)&&n)
    	{
    		int i,j;
    		double x,y;
    		for(i=0;i<n;i++)
    		{
    			scanf("%lf%lf",&x,&y);
    			up[i].x=x;up[i].y=y;
    			bottom[i].x=x;bottom[i].y=y-1;
    		}
    		int k;
    		maxv=-1000000;
    		int flag=0;
    		if(n<3)  flag=1;
    		for(i=0;i<n;i++)
    		{
    			for(j=i+1;j<n;j++)
    			{
    				if(judge(up[i],bottom[j],j))
    				{
    					flag=1;
    					break;
    				}	
    				if(judge(bottom[i],up[j],j))
    				{
    					flag=1;
    					break;
    				}
    			}
    		}
    		if(flag) printf("Through all the pipe.\n");
    		else printf("%.2lf\n",maxv);
    	}
    	return 0;
    }


  • 相关阅读:
    MarkDownPad2 注册码
    如何让你的.vue在sublime text 3 中变成彩色?
    字典树入门
    博弈论
    复杂度问题
    gets scanf以及缓冲区域的问题
    对象
    矩阵转置的一般算法
    二叉树的建立、遍历、叶子节点计数、深度计算
    D
  • 原文地址:https://www.cnblogs.com/lj030/p/3002236.html
Copyright © 2011-2022 走看看