Java实现蓝桥杯 算法提高 线段和点
程序员文章站
2022-03-30 07:51:18
目录一、算法提高 线段和点1、时间限制1.0s 内存限制:256.0mb2、问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满...
一、算法提高 线段和点
1、时间限制
1.0s 内存限制:256.0mb
2、问题描述
有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满足区间[b,c]。
求最小的点的子集,使得所有区间都被满足。
3、输入格式
第一行两个整数n m
以下n行 每行一个整数,代表点的坐标
以下m行 每行两个整数,代表区间的范围
4、输出格式
输出一行,最少的满足所有区间的点数,如无解输出-1。
样例输入:
5 5
2
6
3
8
7
2 5
3 4
3 3
2 7
6 9
样例输出:
2
5、数据规模和约定
1<=n,m<=10000
0<=点和区间的坐标<=50000
import java.io.ioexception; import java.io.inputstream; import java.util.arrays; import java.util.comparator; public class xianduanhedian { private static inputstream is = system.in; public static int nextint() { try { int i; while ((i = is.read()) < 45 || i > 57) { } int mark = 1, temp = 0; if (i == 45) { mark = -1; i = is.read(); } while (i > 47 && i < 58) { temp = temp * 10 + i - 48; i = is.read(); } return temp * mark; } catch (ioexception e) { e.printstacktrace(); } return -1; } static class node { public int start; public int end; public node(int start, int end) { this.start = start; this.end = end; } } public static void main(string[] args) { int n = nextint(); int m = nextint(); int point[] = new int[n]; for (int i = 0; i < n; i++) point[i] = nextint(); node node[] = new node[m]; for (int i = 0; i < m; i++) node[i] = new node(nextint(), nextint()); arrays.sort(point); arrays.sort(node, new comparator<node>() { public int compare(node o1, node o2) { return o1.end - o2.end; } }); int currentpoint = 0; int count = 0; int j = 1; for (int i = 0; i < m; i++) { int x = node[i].start; int y = node[i].end; if (x <= currentpoint) continue; int temp = -1; for (j -= 1; j < n; j++) { if (point[j] <= y) { temp = point[j]; } else { break; } } if (temp == -1) { count = 0; break; } else { currentpoint = temp; count++; } } system.out.println(count); } }
到此这篇关于java实现蓝桥杯 算法提高 线段和点的文章就介绍到这了,更多相关java内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Java实现蓝桥杯 算法提高 线段和点
-
Java实现第十届蓝桥杯试题F特别数的和
-
Java实现 蓝桥杯 算法训练 字符串长度(IO无敌)
-
Java实现 蓝桥杯 算法训练 审美课
-
备战蓝桥杯java(十一):算法竞赛中的常用API :HashSet 和 TreeSet
-
备战蓝桥杯java(十):算法竞赛中的常用API :HashMap 和 TreeMap
-
备战蓝桥杯java(九):算法竞赛中的常用API :Vector和Stack
-
Java实现 蓝桥杯VIP 算法训练 一元三次方程
-
Java实现蓝桥杯 算法提高 线段和点
-
备战蓝桥杯java(十三): 算法竞赛中的常用API:sort方法和自定义比较器的写法