剩下的樹

題目描述

    有一個長度爲整數L(1<=L<=10000)的馬路,能夠想象成數軸上長度爲L的一個線段,起點是座標原點,在每一個整數座標點有一棵樹,即在0,1,2,...,L共L+1個位置上有L+1棵樹。     如今要移走一些樹,移走的樹的區間用一對數字表示,如 100 200表示移走從100到200之間(包括端點)全部的樹。     可能有M(1<=M<=100)個區間,區間之間可能有重疊。如今要求移走全部區間的樹以後剩下的樹的個數。

輸入描述:

    兩個整數L(1<=L<=10000)和M(1<=M<=100)。
    接下來有M組整數,每組有一對數字。

輸出描述:

    可能有多組輸入數據,對於每組輸入數據,輸出一個數,表示移走全部區間的樹以後剩下的樹的個數。
示例1

輸入

複製
500 3
100 200
150 300
470 471

輸出

複製
298

代碼:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int L,M;
    cin >> L >> M;
    vector<int> range_begain,range_end, tree;
    tree.resize(L);
    range_begain.resize(M);
    range_end.resize(M);
    //記錄區間值1
    for (int i = 0; i < M;i++)
    {
        cin >> range_begain[i] >> range_end[i];
    }
    //記錄樹的值爲1,移除以後記爲0
    for (int i = 0; i < L; i++)
    {
        tree[i] = 1;
    }
    for (int i = 0; i < M;i++)
    {
        for (int j = range_begain[i]; j < range_end[i]; j++)
        {
            tree[j] = 0;
        }
    }
    int num = 0;
    for (int i = 0; i < L;i++)
    {
        if (tree[i]==1)
        {
            num++;
        }
    }
    cout << num << endl;
    system("pause");
    return 0;

}
View Code
相關文章
相關標籤/搜索