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的約數和有