zoukankan      html  css  js  c++  java
  • 算法设计与分析 1.4 区间

    ★题目描述

    有N个区间,第i个区间的端点是li和ri,即第i个区间覆盖了[li,ri]

    是否存在一个编号最小的区间包含所有的区间。如果存在,则输出区间编号,否则输出"-1".

    区间包含指的是,假设一个区间[a,b]包含另外一个区间[c,d],需要满足a<=c<=d<=b.

    ★输入格式

    第一行一个整数N表示区间个数,N<=100000

    接下去N行每行2个整数li,ri表示第i个区间的端点,1<=li<=ri<=1000000000

    对于30%的数据,N<=100, 1<=li<=ri<=100

    对于80%的数据,N<=1000, 1<=li<=ri<=1000

    对于100%的数据,N<=100000, 1<=li<=ri<=1000000000

    ★输出格式

    一个整数表示满足要求区间的编号。若不存在则输出-1。

    ★样例输入

    3
    1 1
    2 2
    3 3
    

    ★样例输出

    -1
    
    /*
    直切要点:
    如果存在一个区间包含所有其他区间
    那么该区间的长度一定最大 
    */
    
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int n;
    	cin>>n;
    	
    	int l,r,minL,maxR;
    	scanf("%d%d",&minL,&maxR);
    	int resL=minL,resR=maxR, resid=1; //如果是答案区间,那么该区间长度一定最大 
    	for(int i=2; i<=n; ++i){
    		scanf("%d%d",&l,&r);
    		minL = min(l,minL);
    		maxR = max(r,maxR);
    		
    		if(resR-resL<r-l) resL=l,resR=r,resid=i; 
    	}
    	
    	if(resL==minL && resR==maxR) printf("%d
    ",resid);
    	else printf("-1
    "); 
    	return 0;
    }
    
  • 相关阅读:
    洛谷P2146 [NOI2015]软件包管理器
    洛谷P3038 [USACO11DEC]牧草种植Grass Planting
    洛谷P2831 愤怒的小鸟
    洛谷P1084 疫情控制
    洛谷P3258 [JLOI]2014松鼠的新家
    洛谷P1084 运输计划
    洛谷P2051 [AHOI2009]中国象棋
    洛谷P1438 无聊的数列
    洛谷P1312 Mayan游戏
    luogu P1038 神经网络
  • 原文地址:https://www.cnblogs.com/yejifeng/p/12044333.html
Copyright © 2011-2022 走看看