zoukankan      html  css  js  c++  java
  • POJ 1474 Video Surveillance(半平面交)

    题目链接

    2Y,模版抄错了一点。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <string>
     4 #include <cmath>
     5 #include <algorithm>
     6 using namespace std;
     7 #define eps 1e-8
     8 #define N 2001
     9 struct point
    10 {
    11     double x,y;
    12 }p[N],pre[N],temp[N];
    13 double a,b,c;
    14 int n,m;
    15 void getline(point x,point y)
    16 {
    17     a = y.y - x.y;
    18     b = x.x - y.x;
    19     c = y.x * x.y - x.x * y.y;
    20 }
    21 point intersect(point x,point y)
    22 {
    23     double u = fabs(a*x.x + b*x.y + c);
    24     double v = fabs(a*y.x + b*y.y + c);
    25     point ans;
    26     ans.x = (x.x*v+y.x*u)/(u+v);
    27     ans.y = (x.y*v+y.y*u)/(u+v);
    28     return ans;
    29 }
    30 void cut()
    31 {
    32     int num = 0,i;
    33     for(i = 1;i <= m;i ++)
    34     {
    35         if(a*p[i].x + b*p[i].y + c > -eps)
    36         {
    37             temp[++num] = p[i];
    38         }
    39         else
    40         {
    41             if(a*p[i-1].x + b*p[i-1].y + c > eps)
    42             temp[++num] = intersect(p[i],p[i-1]);
    43             if(a*p[i+1].x + b*p[i+1].y + c > eps)
    44             temp[++num] = intersect(p[i],p[i+1]);
    45         }
    46     }
    47     for(i = 1;i <= num;i ++)
    48     p[i] = temp[i];
    49     p[0] = p[num];
    50     p[num+1] = p[1];
    51     m = num;
    52 }
    53 void fun()
    54 {
    55     int i;
    56     m = n;
    57     for(i = 1;i <= n;i ++)
    58     {
    59         getline(pre[i],pre[i+1]);
    60         cut();
    61     }
    62 }
    63 int main()
    64 {
    65     int i,cas = 1;
    66     while(scanf("%d",&n)!=EOF)
    67     {
    68         if(!n) break;
    69         for(i = 1;i <= n;i ++)
    70         {
    71             scanf("%lf%lf",&pre[i].x,&pre[i].y);
    72             p[i] = pre[i];
    73         }
    74         pre[n+1] = pre[1];
    75         p[n+1] = p[1];
    76         p[0] = p[n];
    77         fun();
    78         printf("Floor #%d
    ",cas ++);
    79         if(m)
    80         printf("Surveillance is possible.
    ");
    81         else
    82         printf("Surveillance is impossible.
    ");
    83         printf("
    ");
    84     }
    85     return 0;
    86 }
  • 相关阅读:
    Django 【第十二篇】Form组件进阶
    Django 【第十一篇】Form组件基础
    前端知识点总结
    vue组件续和前端工程化
    vue组件
    Vue视图下
    Vue实例与渲染
    BootStrap
    jQuery事件与动画
    dom操作 属性操作 样式操作
  • 原文地址:https://www.cnblogs.com/naix-x/p/3370530.html
Copyright © 2011-2022 走看看