zoukankan      html  css  js  c++  java
  • XidianOJ 1023 IP查询

    题目描述

    现实生活中,每一个IP段都指向一座城市。为了简化问题,我们将IP段直接看做一个整形数,每座城市也有自己的唯一标识ID,也可以看做一个整数。那么问题来了,现在已知有多个闭区间代表多个IP段,每个区间对应一个城市的ID。现在,小L要查询某个IP属于那个城市,希望聪明的你来帮他完成。

    输入

    第一行输入T,表示有T组测试数据(T<=5)
    接下来一行输入整数n,代表有n个区间(0=<n<=10^5)
    接下来n行,每行输入三个整数x,y,id.代表区间[x,y]所对应的城市ID。数据确保任意俩个区间交集为空,且ID唯一。(0=<x<y<=10^8 , 0=<ID<=10^8)
    接下来一行输入整数m,代表m次查询(0=<m<=10^5)
    接下来m行,每行输入一个整数V,代表所查询的IP(V<=10^8)

    输出

    对于每次查询,输出一行,表示其对应的城市ID。
    如果未找到,输出-1
    --正文
    感觉c++还是好使啊,有时候是真的不想写一遍排序
    #include<cstdio>  
    #include<algorithm>  
    using namespace std;  
    int n;  
    typedef struct Node  
    {  
        int l,r,id;  
    }Node;  
      
    Node p[100007];  
      
    int cmp(const Node a,const Node b)  
    {  
        return a.l<b.l;  
    }  
      
    int search(int q)  
    {  
        if(q<p[0].l) return -1;  
        int left=0,right=n-1;  
        while(right>left)  
        {  
            int mid=(left+right+1)/2;  
            if(q>=p[mid].l)  
            {  
                left=mid;  
            }  
            else   
            {  
                right=mid-1;  
            }  
        }  
        return left;  
    }  
      
    int main()  
    {  
        int T;  
        scanf("%d",&T);  
        while(T--)  
        {  
            scanf("%d",&n);  
            for(int i=0;i<n;i++)  
            {  
                scanf("%d%d%d",&p[i].l,&p[i].r,&p[i].id);  
            }  
            sort(p,p+n,cmp);  
            int l;  
            scanf("%d",&l);  
            int q;  
            for(int i=0;i<l;i++)  
            {  
                scanf("%d",&q);  
                int t=search(q);  
                if(t==-1)   puts("-1");  
                else if(p[t].r>=q)   printf("%d
    ",p[t].id);  
                else puts("-1");  
            }  
        }  
        return 0;  
    }  
  • 相关阅读:
    Winform 时间
    button的后台点击事件
    Winform文本框只能输入限定的文本
    vue的生命周期函数
    ES6新增语法
    购物车案例(JavaScript动态效果)
    前端es6总结
    jQuery与vue的区别是什么?
    vue实现双向绑定原理
    JS实现简单分页功能
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6066040.html
Copyright © 2011-2022 走看看