两个整数L(1<=L<=10000)和M(1<=M<=100)。 接下来有M组整数,每组有一对数字。
可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。
500 3 100 200 150 300 470 471
298
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s; while ((s = br.readLine()) != null) { String[] ss = s.split(" "); int L = Integer.parseInt(ss[0]); int M = Integer.parseInt(ss[1]); int[] way = new int[L+1]; Arrays.fill(way, 1);//默认种满了树 for (int i = 0; i < M; i++) { String[] str = br.readLine().split(" "); int start = Integer.parseInt(str[0]); int end = Integer.parseInt(str[1]); for (int j = start; j <= end; j++) { way[j] = 0; } } int cout = 0; for (int i = 0; i < L+1; i++) { if (way[i] != 0) cout++; } System.out.println(cout); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int l = scanner.nextInt(); int m = scanner.nextInt(); int[] record = new int[l + 1]; for (int i = 0; i < m; i++) { int x = scanner.nextInt(); int y = scanner.nextInt(); for (int j = x; j <=y ; j++) { record[j]=1; } } int count=0; for (int i = 0; i <= l; i++) { if (record[i]==0) count++; } System.out.println(count); } }
import java.util.*; class Interval implements Comparable<Interval> { private int start; private int end; public Interval(int s, int e) { start = s; end = e; } public int getStart() { return start; } public int getEnd() { return end; } public int compareTo(Interval other) { if (start == other.start) { return end - other.end; } return start - other.start; } } public class Main { public static void main(String[] args) { Scanner reader = new Scanner(System.in); while (reader.hasNext()) { ArrayList<Interval> intervals = new ArrayList<>(); int L = reader.nextInt(); int M = reader.nextInt(); for (int i = 0; i < M; ++i) { int start = reader.nextInt(); int end = reader.nextInt(); intervals.add(new Interval(start, end)); } Collections.sort(intervals); int prev_end = intervals.get(0).getEnd(); int prev_start = intervals.get(0).getStart(); int sum = prev_end - prev_start; for (int i = 1; i < intervals.size(); ++i) { if (intervals.get(i).getStart() < prev_end) { if (intervals.get(i).getEnd() > prev_end) { sum += intervals.get(i).getEnd() - prev_end; } } else { sum += intervals.get(i).getEnd() - intervals.get(i).getStart() + 1; } prev_end = Math.max(intervals.get(i).getEnd(), prev_end); } System.out.println(L - sum); } } }