1. 程式人生 > >賽碼網--馬路上的路燈(Java實現)

賽碼網--馬路上的路燈(Java實現)

題目描述
									

城市E的馬路上有很多路燈,每兩個相鄰路燈之間的間隔都是1公里。小賽是城市E的領導,為了使E城市更快更好的發展,需要在城市E的一段長度為M的主幹道上的一些區域建地鐵。這些區域要是建了地鐵,就需要挪走相應的路燈。可以把長度為M的主幹道看成一個數軸,一端在數軸0的位置,另一端在M的位置;數軸上的每個整數點都有一個路燈。要建地鐵的這些區域可以用它們在數軸上的起始點和終止點表示,已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的路燈(包括區域端點處的兩個路燈)移走。你能幫助小賽計算一下,將這些路燈移走後,馬路上還有多少路燈?

輸入

輸入檔案的第一行有兩個整數M(1 <= M <= 10000)和 N(1 <= N <= 100),M代表馬路的長度,N代表區域的數目,M和N之間用一個空格隔開。接下來的N行每行包含兩個不同的整數,用一個空格隔開,表示一個區域的起始點和終止點的座標。

所有輸入都為整數。且M和N的範圍為上面提示範圍。

樣例輸入

500 3
100 200
150 300
360 361

輸出

輸出檔案包括一行,這一行只包含一個整數,表示馬路上剩餘路燈的數目。

樣例輸出

298

解題思路:剛開始做的時候,被與前面的資料進行比較難住了,考慮建立類什麼的來解決,但是沒解決出來,參考了一下大佬的程式碼,原來這麼簡單,用一個數組就可以解決了,唉,這次真的要做好筆記了~~~

程式碼:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int M = sc.nextInt();
        int N = sc.nextInt();
        int[] road = new int[M+1];
        for(int i = 0;i<N;i++){
            int a = sc.nextInt();
            int b = sc.nextInt();
            for(int j=a;j<=b;j++){
                road[j] = 1;
            }
        }
        int sum = 0;
        for (int i=0;i<M+1;i++){
            if (road[i]==0)
                sum++;
        }
        System.out.println(sum);
    }
}