zoukankan      html  css  js  c++  java
  • POJ 1328

    逆向思维,假设岛屿是雷达,映射到(x) 轴的区间取交集,放置一个雷达即可

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <vector>
    #include <cmath>
    using namespace std;
    const int N = 1e3 + 10;
    struct node {
        double l,r;
    }c[N];
    bool cmp(node a,node b) {
        if(a.l != b.l) return a.l < b.l;
        return b.r < a.r;
    }
    int main() {
        int cnt = 0,n,d;
        while(cin >> n >> d && n && d) {
            bool ok = 1;
            for(int i = 0;i < n; ++i) {
                int x,y;
                cin >> x >> y;
                if(y > d) ok = 0;
                double dx = sqrt(d * d * 1.0 - y * y);
                c[i].l = x - dx;
                c[i].r = x + dx;
            }
            if(ok == 0) {
                cout << "Case " << ++cnt << ": -1" << endl;
                continue;
            }
            sort(c,c + n,cmp);
            double r = c[0].r;
            int ans = 1;
            for(int i = 0;i < n; ++i) {
                if(c[i].l <= r) r = min(r,c[i].r);
                else r = c[i].r,ans ++;
            }
            cout << "Case " << ++cnt << ": " << ans << endl;
        }
        return 0;
    }
    

    参考

    chengyulala

  • 相关阅读:
    一些$LCT$的瓜皮题目
    写点东西(关于背包问题)
    字符串算法总结
    常系数齐次线性递推
    原根算法与剩余定理
    问题集
    常用链接
    回形针PaperClip
    6.824拾遗
    杂项
  • 原文地址:https://www.cnblogs.com/lukelmouse/p/13338479.html
Copyright © 2011-2022 走看看