zoukankan      html  css  js  c++  java
  • POJ 2398 Toy Storage(计算几何)

    和POJ2318一样的方法,都是利用叉积推断+二分。只是这题要先排序。还有输出的是,每一个数量的格子数

    代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int N = 1005;
    
    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]++;
    }
    
    bool cmp(Seg a, Seg b) {
        return a.a.x < b.a.x;
    }
    
    int out[N];
    
    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));
            }
            sort(seg, seg + n, cmp);
            for (int i = 0; i < m; i++) {
                scanf("%d%d", &x, &y);
                gao(Point(x, y));
            }
            memset(out, 0, sizeof(out));
            for (int i = 0; i <= n; i++)
                if (ans[i]) out[ans[i]]++;
            printf("Box
    ");
            for (int i = 1; i <= 1000; i++)
                if (out[i]) printf("%d: %d
    ", i, out[i]);
        }
        return 0;
    }
    


  • 相关阅读:
    userdir 希望用户能够以http://X.X.X.X/~username 方式来访问自己的网页
    var_export() 函数的使用
    mb_detect_encoding — 检测字符的编码
    详解PHP fsockopen的使用方法
    jQuery 返回顶部
    Mysql函数
    sql where 1=1和 0=1 的作用
    Numpy基础学习(三)
    Numpy 中的矩阵
    Numpy数组的全通用函数
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7253581.html
Copyright © 2011-2022 走看看