• poj1106


    极坐标排序+叉积判断夹角

    View Code
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    
    #define maxn 200
    #define eps 1.0e-8
    
    struct Point
    {
        int x, y;
    }s, point[maxn];
    
    double r;
    int n;
    
    bool operator < (const Point &a, const Point &b)
    {
        return atan2((double)a.x, (double)a.y) < atan2((double)b.x, (double)b.y);
    }
    
    void input()
    {
        int cnt = 0;
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
        {
            scanf("%d%d", &point[cnt].x, &point[cnt].y);
            point[cnt].x -= s.x;
            point[cnt].y -= s.y;
            if (r * r > point[cnt].x * point[cnt].x + point[cnt].y * point[cnt].y - eps)
                cnt++;
        }
        n = cnt;
    }
    
    double xmulti(Point a, Point b)
    {
        return a.x * b.y - a.y * b.x;
    }
    
    bool within(Point a, Point b)
    {
        return xmulti(b, a) > -eps;
    }
    
    int work()
    {
        int r = 0;
        int ans = 0;
        for (int i = 0; i < n; i++)
        {
            while (r - i < n && within(point[i], point[r % n]))
                r++;
            ans = max(ans, r - i);
        }
        return ans;
    }
    
    int main()
    {
        //freopen("t.txt", "r", stdin);
        while (scanf("%d%d%lf", &s.x, &s.y, &r), r >= 0)
        {
            input();
            sort(point, point + n);
            printf("%d\n", work());
        }
        return 0;
    }
  • 相关阅读:
    【前端面试】前端知识点总结_前端大厂车轮战_转自mahmud(小麦)大神
    【网优】浅谈LTE无线网络优化
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
  • 原文地址:https://www.cnblogs.com/rainydays/p/2840591.html
Copyright © 2020-2023  润新知