1. 程式人生 > >ALGO-29 演算法訓練 校門外的樹

ALGO-29 演算法訓練 校門外的樹

 ALGO-29  校門外的樹(區間處理)

問題描述

某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。 
由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走後,馬路上還有多少棵樹。 
輸入資料
輸入的第一行有兩個整數L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表馬路的長度,M代表區域的數目,L和M之間用一個空格隔開。接下來的M行每行包含兩個不同的整數,用一個空格隔開,表示一個區域的起始點和終止點的座標。

輸出要求
輸出包括一行,這一行只包含一個整數,表示馬路上剩餘的樹的數目。
輸入樣例
500 3
150 300
100 200
470 471
輸出樣例
298

思路:利用桶排序中的思想,將在此區域中的值標記,最後遍歷所有值,計數未標記的值有多少,再列印這個 計數值。

#include <iostream>
#include <vector>
using namespace std;


int main()
{
int l,m;
cin>>l>>m;
vector<int> v(l+1,1); //注意此處針對vector的用法,對於vector向量中的l+1個數值賦值1
for(int i=0;i<m;i++) {
int a,b;
cin>>a>>b;
for(int j=a;j<=b;j++) {  //對於a、b區間的數值,賦值為0,表示需要建地鐵從而挖去樹
v[j]=0;
}
}


int cnt=0;
for(int i=0;i<l+1;i++) { //遍歷[0,l+1]區間,計算未被挖走的樹
if(v[i]==1)
cnt++;
}
cout <<cnt;
return 0;
}

相關推薦

ALGO-29 演算法訓練 校門外的

 ALGO-29  校門外的樹(區間處理) 問題描述 某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。 由於馬路上有一

藍橋杯 ALGO-47 演算法訓練 蜜蜂飛舞

問題描述“兩隻小蜜蜂呀,飛在花叢中呀……” 話說這天天上飛舞著兩隻蜜蜂,它們在跳一種奇怪的舞蹈。用一個空間直角座標系來描述這個世界,那麼這兩隻蜜蜂初始座標分別為(x1,y1,z1),(x2,y2,z2)  。在接下來它們將進行n次飛行,第i次飛行兩隻蜜蜂分別按照各自的速度向量飛行ti個單位時間。

ALGO-1演算法訓練 區間k大數查詢

這麼簡單的題做了這麼多遍才對,腦子壞掉了吧! #include <iostream> #include<algorithm> #include<stdio.h> #include<string.h> using n

[藍橋杯]ALGO-90.演算法訓練_出現次數最多的整數

   問題描述   編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。

[藍橋杯]ALGO-97.演算法訓練_排序

  題目描述: 問題描述   編寫一個程式,輸入3個整數,然後程式將對這三個整數按照從大到小進行排列。   輸入格式:輸入只有一行,即三個整數,中間用空格隔開。   輸出格式:輸出只有一行,即排序後的結果。   輸入輸出樣例 樣例輸入 9 2 30 樣例輸出 30 9 2

[藍橋杯]ALGO-101.演算法訓練_圖形顯示

  問題描述   編寫一個程式,首先輸入一個整數,例如5,然後在螢幕上顯示如下的圖形(5表示行數):   * * * * *   * * * *   * * *   * *   * 題目描述   程式碼如下: 1 #incl

ALGO-107演算法訓練 9-7連結串列資料求和操作 (c++)

  演算法訓練 9-7連結串列資料求和操作   時間限制:1.0s   記憶體限制:512.0MB        讀入10個複數,建立對應連結串列,然後求所有複數的和。 樣例輸入 1 2 1 3 4 5 2

ALGO-106演算法訓練 6-3判定字元位置

演算法訓練 6-3判定字元位置 演算法訓練 6-3判定字元位置   時間限制:1.0s   記憶體限制:512.0MB        返回給定字串s中母音字母的首次出現位置。英語母音字母只有‘a’、‘e’、‘i’、‘o’

ALGO-105演算法訓練 黑色星期五(c++)

 演算法訓練 黑色星期五   時間限制:1.0s   記憶體限制:512.0MB      問題描述   有些西方人比較迷信,如果某個月的13號正好是星期五,他們就會覺得不太吉利,用古人的說法,就是“諸事不宜”。請

ALGO-104演算法訓練 阿爾法乘積(c++)

演算法訓練 阿爾法乘積   時間限制:1.0s   記憶體限制:512.0MB      問題描述   計算一個整數的阿爾法乘積。對於一個整數x來說,它的阿爾法乘積是這樣來計算的:如果x是一個個位數,那麼它的阿爾法乘積就

ALGO-98演算法訓練 數位分離

  演算法訓練 數位分離   時間限制:1.0s   記憶體限制:512.0MB      問題描述   編寫一個程式,輸入一個1000 以內的正整數,然後把這個整數的每一位數字都分離出來,並逐一地顯示。   

ALGO-94演算法訓練 新生舞會 c++

 演算法訓練 新生舞會   時間限制:1.0s   記憶體限制:512.0MB      問題描述   新生舞會開始了。n名新生每人有三個屬性:姓名、學號、性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字串

ALGO-93演算法訓練 反置數

演算法訓練 反置數   時間限制:1.0s   記憶體限制:512.0MB      問題描述   一個整數的“反置數”指的是把該整數的每一位數字的順序顛倒過來所得到的另一個整數。如果一個整數的末尾是以0結尾,那麼在它的

ALGO-89演算法訓練 字元刪除

  演算法訓練 字元刪除   時間限制:1.0s   記憶體限制:512.0MB      問題描述   編寫一個程式,先輸入一個字串str(長度不超過20),再輸入單獨的一個字元ch,然後程式會把字串str當中出

ALGO-83演算法訓練 階乘

演算法訓練 階乘   時間限制:1.0s   記憶體限制:512.0MB      問題描述   一個整數n的階乘可以寫成n!,它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在

ALGO-82演算法訓練 輸出米字形

演算法訓練 輸出米字形   時間限制:1.0s   記憶體限制:512.0MB        根據輸入的正整數n (1  米字形由一個(2n-1)*(2n-1)的矩陣組成,矩陣包含從大寫A開始的n個字母   例如:n=3時,

ALGO-12 演算法訓練 冪方分解

  演算法訓練 冪方分解   時間限制:1.0s   記憶體限制:256.0MB        問題描述   任何一個正整數都可以用2的冪次方表示。例如:   137=27+23+20&nb

ALGO-85演算法訓練 進位制轉換

  演算法訓練 進位制轉換   時間限制:1.0s   記憶體限制:512.0MB      問題描述   編寫一個程式,輸入一個二進位制的字串(長度不超過32),然後計算出相應的十進位制整數,並把它打印出來。

[藍橋杯]ALGO-124.演算法訓練_數字三角形

  問題描述   (圖3.1-1)示出了一個數字三角形。 請編一個程式計算從頂至底的某處的一條路   徑,使該路徑所經過的數字的總和最大。   ●每一步可沿左斜線向下或右斜線向下走;   ●1<三角形行數≤100;   ●三角形中的數字為整數0,1,…99;

ALGO-117演算法訓練 友好數(c++)

 演算法訓練 友好數   時間限制:1.0s   記憶體限制:256.0MB      問題描述   有兩個整數,如果每個整數的約數和(除了它本身以外)等於對方,我們就稱這對數是友好的。例如:   9的約數和有