首先可以想到的是:活动的持续时间越短,可以选择的活动数量越多,再继续考虑活动的开始时间越早,cnt越大,综合两个条件活动的结束时间越早(等价条件<==>)cnt越大
注:两个条件的优先级是一样的,不能分开排序
import java.util.*;
public class Main {
static final int N = 1010;
static Pair[] pp = new Pair[N];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 1; i <= n; i++) {
pp[i] = new Pair(sc.nextInt(), sc.nextInt());
}
Arrays.sort(pp, 1, n + 1, (o1, o2) -> o1.end - o2.end);
int cnt = 0, cur = 0;
for (int i = 1; i <= n; i++) {
Pair pair = pp[i];
if (pair.start >= cur) {
cur = pair.end;
cnt ++;
}
}
System.out.println(cnt);
}
}
class Pair {
int start, end;
public Pair(int start, int end) {
this.start = start;
this.end = end;
}
}