zoukankan      html  css  js  c++  java
  • uva1615 Highway

    画图,每个给出点都有对应区间;先sort,再尽量靠右选;很常见的套路了..//注意不要越界(0,L)

    struct Q //复习结构
    {
    double l,r;
    Q(double _l,double _r):l(_l),r(_r){}
    bool operator < (const Q &a) const {
    return r<a.r;
    }
    };

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct village
    {
        double l,r;
        village(double _l,double _r):l(_l),r(_r){}
        bool operator < (const village &a) const {
            return r<a.r;
        }
    };
    vector<village>vec;
    int length,D,n;
    
    
    void dist(int x,int y,double &l,double &r)
    {
        l=(double)x-sqrt((double)D*(double)D-(double)y*(double)y);
        r=(double)x+sqrt((double)D*(double)D-(double)y*(double)y);
    }
    
    int main()
    {
        int x,y;
        double l,r;
        while(scanf("%d",&length)!=EOF)
        {
            scanf("%d%d",&D,&n);
            vec.clear();
            for(int i=0;i<n;++i){
                scanf("%d%d",&x,&y);
                dist(x,y,l,r);
                vec.push_back(village(max(0.0,l),min((double)length,r)));
            }
            sort(vec.begin(),vec.end());
             int ans=0;
             double temp=-1.0;
             for(int i=0;i<n;++i){
            if(temp<vec[i].l||temp>vec[i].r){
                ++ans;
                temp=vec[i].r;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    京东白条
    Linux命令(40)rm 命令
    Linux命令(39)rmdir 命令
    Linux命令(38)pstree命令
    Linux命令(37)type命令
    Linux命令(36)help命令
    Linux命令(35)du命令
    CentOS7修改主机名
    Linux命令(34)tac命令
    Linux命令(33)cat命令
  • 原文地址:https://www.cnblogs.com/lqerio/p/9745590.html
Copyright © 2011-2022 走看看