zoukankan      html  css  js  c++  java
  • POJ 2318 TOYS(计算几何)

    跨产品的利用率推断点线段向左或向右,然后你可以2分钟

    代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int N = 5005;
    
    int n, m, x1, y1, x2, y2;
    
    struct Point {
        int x, y;
        Point() {}
        Point(int x, int y) {
            this->x = x;
            this->y = y;
        }
    };
    
    typedef Point Vector;
    
    Vector operator - (Vector A, Vector B) {
        return Vector(A.x - B.x, A.y - B.y);
    }
    
    struct Seg {
        Point a, b;
        Seg() {}
        Seg(Point a, Point b) {
            this->a = a;
            this->b = b;
        }
    } seg[N];
    
    int ans[N];
    
    int Cross(Vector A, Vector B) {return A.x * B.y - A.y * B.x;}
    
    void gao(Point p) {
        int l = 0, r = n;
        while (l < r) {
            int mid = (l + r) / 2;
            if (Cross(seg[mid].a - p, seg[mid].b - p) < 0) r = mid;
            else l = mid + 1;
        }
        ans[l]++;
    }
    
    int main() {
        while (~scanf("%d", &n) && n) {
            memset(ans, 0, sizeof(ans));
            scanf("%d%d%d%d%d", &m, &x1, &y1, &x2, &y2);
            int x, y;
            for (int i = 0; i < n; i++) {
                scanf("%d%d", &x, &y);
                seg[i] = Seg(Point(x, y1), Point(y, y2));
            }
            for (int i = 0; i < m; i++) {
                scanf("%d%d", &x, &y);
                gao(Point(x, y));
            }
            for (int i = 0; i <= n; i++)
                printf("%d: %d
    ", i, ans[i]);
            printf("
    ");
        }
        return 0;
    }
    


  • 相关阅读:
    Oracle安装
    自动化测试开发
    Hyperf 接入阿里云ACM应用配置管理中心
    PHP redis有序集合实现分页
    虚拟现实与大数据
    树形数据结构化
    立即执行函数
    jQuery中的显示与隐藏
    jQuery中的HTML
    Django+Nginx配置+前后端交互
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4590737.html
Copyright © 2011-2022 走看看