输入描述:
第一行包含两个整数 L 和 M(1 ≤ L ≤ 10000,1 ≤ M ≤ 100),分别表示马路长度和施工区域数量。接下来 M 行,每行给出两个整数 l_i 和 r_i(0 ≤ l_i ≤ r_i ≤ L),表示第 i 个施工区域的起始和终止坐标。
输出描述:
输出一个整数,表示移除所有施工区域内的树木(含端点)后,剩余树木的总数。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int L = in.nextInt();//马路的长度
int M = in.nextInt();//地铁施工区域数
//建立数组:arr[pos] = true 表示pos位置的树被施工移除
boolean[] arr = new boolean[L + 1];//长度L+1,对应0到L的所有位置
for(int i = 0;i < M; i++){
int li = in.nextInt();//表示起点
int ri = in.nextInt();//表示重点
//遍历当前施工区域的所有位置,标记为施工中
for(int pos = li; pos <= ri;pos++){
arr[pos] = true;
}
}
int remain = 0;//统计剩余树的数量:未被标记的位置数量
for (boolean isRemoved : arr){
if(!isRemoved){//如果位置未被施工,树还在
remain++;
}
}
System.out.println(remain);
}
}
884

被折叠的 条评论
为什么被折叠?



