博客
关于我
AcWing 908. 最大不相交区间数量(贪心:同区间选点)
阅读量:355 次
发布时间:2019-03-04

本文共 1189 字,大约阅读时间需要 3 分钟。

给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。

输出可选取区间的最大数量。

输入格式

第一行包含整数N,表示区间数。

接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。

输出格式

输出一个整数,表示可选取区间的最大数量。

数据范围

1≤N≤10^5,

−10^9≤ai≤bi≤10^9输入样例:

3-1 12 43 5

输出样例:

2
import java.io.*;import java.lang.*;import java.util.*;class Main{        static int n = 0, N = 100010;    static int cnt = 1;    public static void main(String[] args)throws Exception{        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));        n = Integer.valueOf(buf.readLine());        int[][] nums = new int[n][2];        int t = 0;        while(n-- != 0){            String[] info = buf.readLine().split(" ");            int a = Integer.valueOf(info[0]);            int b = Integer.valueOf(info[1]);            nums[t][0] = a;            nums[t][1] = b;            t++;        }        Arrays.sort(nums, (a,b)->{return a[0] - b[0];});//排序        for(int i = 1; i < t; ++i){            if(nums[i][0] > nums[i - 1][1]){                cnt++;            }else{                //选择最小右侧区间以求找到最大的重合次数,而区间合并是选择最大的右侧以求最长的覆盖范围                nums[i][1] = Math.min(nums[i][1], nums[i - 1][1]);            }        }        System.out.print(cnt);            }}

 

 

 

转载地址:http://vyre.baihongyu.com/

你可能感兴趣的文章
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>