zoukankan      html  css  js  c++  java
  • Codeforces Round #409 (Div. 2) D Volatile Kite

    题意:给一个凸多边形(顺时针方向),对每个点任意移动距离D,求最大的D使得这个多边形一直是凸多边形。

    思路:容易发现对于凸多边形相邻的三个点。。pi,pi+1,pi+2。。pi+1到直线pi,pi+2的距离除以2就是这组点所能接受的最大值。这n组点的最小值就是答案。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e3 + 10;
    struct Point{
        double x , y;
    }p[maxn];
    int n;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%lf%lf",&p[i].x,&p[i].y);
        p[n + 1].x = p[1].x , p[n + 1].y = p[1].y;
        p[n + 2].x = p[2].x , p[n + 2].y = p[2].y;
        double ans = 10000000088 ;
        for(int i = 3;i<=n+2;i++){
            double A = p[i - 2].y-p[i].y; double B = p[i].x - p[i - 2].x; double C = p[i-2].x*p[i].y - p[i].x * p[i - 2].y;
            double d = A * p[i-1].x + B * p[i - 1].y + C;
            if(d < 0) d=-d;
            double dd = sqrt(A * A + B * B);
            d = d / dd;
            d/=2;
            ans = min(d , ans);
        }
        printf("%.8f
    ",ans);
    }
  • 相关阅读:
    ThreadLocal
    spring概述
    排序
    内存的分配原则
    常用概念比较
    垃圾回收机制
    java的内存模型
    对象的内存布局
    adb connect 和 install 通讯流程
    Android硬件抽象层(HAL)深入剖析(三)
  • 原文地址:https://www.cnblogs.com/rtyfcvb/p/6722791.html
Copyright © 2011-2022 走看看