Advertisement

UVa 1615, Highway

阅读量:

题意:
在平面上给定n个点以及一个数值D,目标是在x轴上选取尽可能少的点,确保每个原始点都存在一个被选中的点,其欧几里得距离不超过D。

分析:
该问题本质上可以转化为区间覆盖问题。
通过结合n个点的坐标位置及其高度,可以确定每个点对应的x轴上可选点的范围。
随后采用贪心策略,按照区间的右端点进行排序,并优先选取区间的右侧位置。

代码:

复制代码
    #include<bits/stdc++.h>
    #define LL long long
    #define ms(s) memset(s, 0, sizeof(s))
    using namespace std;
    const int maxn = 1e5 + 10;
    
    struct Node {
    double x, h;
    double l, r;
    friend bool operator < (const Node& n1, const Node& n2) {
        return n1.r < n2.r;
    }
    }node[maxn];
    
    int main() {
    // freopen("in.txt", "r", stdin);
    // freopen("out.txt", "w", stdo

全部评论 (0)

还没有任何评论哟~