zoukankan      html  css  js  c++  java
  • PKU2074

    #include <stdio.h>
    #include 
    <string.h>

    struct line
    {
        
    double x1, x2, y;
        
    bool ex;
    }
    ;

    line l1, l;
    int n;
    double len;

    int lineCnt;
    line l2[
    30];

    void CNT()
    {
        
    int i;
        
    for(i = 0; i < lineCnt; i++)
        
    {
            
    if(l2[i].ex && len<l2[i].x2-l2[i].x1)
                len
    =l2[i].x2-l2[i].x1;
        }

    }


    void cut(line l1, int i)
    {
         
    if(l1.x1 <= l2[i].x1)
        
    {
            
    if(l1.x2<l2[i].x2 && l1.x2>l2[i].x1)
                l2[i].x1
    =l1.x2;
            
    if(l1.x2 >= l2[i].x2)
                l2[i].ex
    =0;
        }
    else
            
    if(l1.x2 >= l2[i].x2)
            
    {
                
    if(l1.x1 <= l2[i].x2)
                    l2[i].x2
    =l1.x1;
            }
    else
            
    {
                l2[lineCnt].x1
    =l1.x2, l2[lineCnt].x2=l2[i].x2, l2[lineCnt].ex=1;
                l2[i].x2
    =l1.x1;
                lineCnt
    ++;
            }

        
    }


    void func()
    {
        
    int i;
        line shadow;
        
    double r=(l1.y-l.y)/(l1.y-l2[0].y);
        shadow.x1
    =l1.x2-(l1.x2-l.x1)/r;
        shadow.x2
    =l1.x1+(l.x2-l1.x1)/r;
        shadow.y
    =l2[0].y;

        
    for(i = 0; i < lineCnt; i++)
        
    {
            
    if(l2[i].ex)
                cut(shadow, i);
        }

    }



    int main(){
        
    while(scanf("%lf%lf%lf"&l1.x1, &l1.x2, &l1.y)==3)
        
    {
            
    if(l1.x1==0 && l1.x2==0 && l1.y==0)
                
    break;
            len
    =0;
            scanf(
    "%lf%lf%lf"&l2[0].x1, &l2[0].x2, &l2[0].y);
            l2[
    0].ex=1;
            lineCnt
    =1;
            scanf(
    "%d"&n);
            
            
    int i;
            
    for(i = 0; i < n; i++)
            
    {
                scanf(
    "%lf%lf%lf"&l.x1, &l.x2, &l.y);
                
    if(l.y<l1.y && l.y>=l2[0].y)
                func();
            }

            CNT();
            
    if(len>0)
                printf(
    "%.2f\n", len);
            
    else
                printf(
    "No View\n");
        }

        
    return 0;
    }
  • 相关阅读:
    Windows 7 Phone 文档数据库Rapid Repository正式发布
    Adobe展示HTML5动画制作IDE
    详解Android实现全屏正确方法
    qtform.com计划
    Adobe加速布局移动开发:Flash Builder+Flex+AIR+Catalyst
    预览:Visual Basic与C#中的异步语法
    Windows 7主题中的壁纸从哪里来?
    F#的编译器及标准库使用Apache 2.0协议开源(暂时还没有看到未来)
    开发者谈Symbian、iPhone、Android、MeeGo平台
    MeeGo 1.1发布
  • 原文地址:https://www.cnblogs.com/SQL/p/933467.html
Copyright © 2011-2022 走看看