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;
    }
  • 相关阅读:
    学习ASP.NET Core(11)-解决跨域问题与程序部署
    学习ASP.NET Core(10)-全局日志与xUnit系统测试
    学习ASP.NET Core(09)-数据塑形与HATEOAS及内容协商
    学习ASP.NET Core(08)-过滤搜索与分页排序
    学习ASP.NET Core(07)-AOP动态代理与日志
    学习ASP.NET Core(06)-Restful与WebAPI
    学习ASP.NET Core(05)-使用Swagger与Jwt认证
    基于NACOS和JAVA反射机制动态更新JAVA静态常量非@Value注解
    DES 加密解密 文件工具类
    springboot-mybatis双数据源配置
  • 原文地址:https://www.cnblogs.com/SQL/p/933467.html
Copyright © 2011-2022 走看看