zoukankan      html  css  js  c++  java
  • luogu 1325 雷达安装

    题目链接

    题意

    (x)轴上方有(n)个海岛,要在(x)轴建雷达,每个雷达的覆盖范围为半径为(d)的圆,问至少要建多少个雷达能覆盖所有海岛。

    思路

    对于每个海岛计算出雷达建立在什么范围((x)轴上的一条线段)内能覆盖到它。排序并计算线段的交。

    Code

    #include <bits/stdc++.h>
    #define inf 0x3f3f3f3f
    #define maxn 200010
    using namespace std;
    typedef long long LL;
    struct node {
        double l, r;
    }a[maxn];
    int x[maxn], y[maxn];
    bool cmp(node u, node v) {
        return u.l < v.l || (u.l == v.l && u.r < v.r);
    }
    int main() {
        int n, d;
        scanf("%d%d", &n, &d);
        for (int i = 0; i < n; ++i) scanf("%d%d", &x[i], &y[i]);
        for (int i = 0; i < n; ++i) {
            if (y[i] > d) { printf("-1
    "); return 0; }
            double dx = sqrt(pow(d,2)-pow(y[i],2));
            a[i].l = x[i] - dx, a[i].r = x[i] + dx;
        }
        sort(a, a+n, cmp);
        double l = -inf, r = -inf;
        int cnt = 0;
        for (int i = 0; i < n; ++i) {
            if (a[i].l <= r) l = max(l, a[i].l), r = min(r, a[i].r);
            else ++cnt, l = a[i].l, r = a[i].r;
        }
        printf("%d
    ", cnt);
        return 0;
    }
    
    
  • 相关阅读:
    边缘检测
    图片融合
    毛玻璃
    图像添加马赛克
    图像颜色反转
    图像灰度处理
    图像仿射变换/旋转
    图像剪切/位移
    图像缩放/插值
    神经网络逼近股票价格
  • 原文地址:https://www.cnblogs.com/kkkkahlua/p/7631766.html
Copyright © 2011-2022 走看看