時間限制: 1000 ms 記憶體限制: 65536 kb
【題目描述】
某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置;數軸上的每個整數點,即0,1,2,……,l,都種有一棵樹。
由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走後,馬路上還有多少棵樹。
【輸入】
第一行有兩個整數l(1 ≤ l ≤ 10000)和 m(1 ≤ m ≤ 100),l代表馬路的長度,m代表區域的數目,l和m之間用乙個空格隔開。接下來的m行每行包含兩個不同的整數,用乙個空格隔開,表示乙個區域的起始點和終止點的座標。
對於20%的資料,區域之間沒有重合的部分;對於其它的資料,區域之間有重合的情況。
【輸出】
包括一行,這一行只包含乙個整數,表示馬路上剩餘的樹的數目。
【輸入樣例】
500 3
150 300
100 200
470 471
【輸出樣例】
說明
主要考查一維陣列。
本題是noip 2005複賽 普及組 第二題。
題目概述
對於輸入樣例:
第1行的數字500表示馬路的長度l,樹的標記是0~500,所以共有501棵樹。
第1行的數字3表示建設地鐵的區域數量m,也表示後面有3行輸入資料。
第2~4行表示m個區域,每個區域由兩個數字組成,其中第乙個數字是區間的起點,第二個數字是區間的終點,表示該區間的樹要移走,用於建設地鐵。例如100 200這個區間,表示從100至200公尺的樹都要移走,其中包含第100公尺和第200公尺的樹。
求l+1棵樹經過m個區域的地鐵開發後,還剩下多少棵樹。
思路分析
本題並不難。l公尺長的馬路有l+1棵樹,使用乙個迴圈輸入m個區域,然後巢狀乙個迴圈處理每乙個區域的樹。經過處理後,剩下有多少棵樹,可以使用乙個迴圈統計。
本題的解決方法也有不少,本題解使用模擬演算法解決,比較簡單,適合初學者。
l公尺長的馬路有l+1棵樹,可以使用一維陣列儲存每一棵樹,而陣列每乙個元素的值無非只有兩個:有樹和無樹,分別用0和1表示。所以宣告一維陣列時,可將所有元素的值初始化為0,而馬路一開始每一棵樹都存在,所以0表示有樹,1表示無樹。**如下:
其中陣列a可選int型別或bool型別。l表示馬路的長度,m表示區域的數量,start和end分別表示每乙個區域的起點和終點,cnt用於統計剩餘還有多少棵樹。
接著以區域數量m作為迴圈次數來輸入m個區域。每迴圈一次,輸入乙個區域的資料。
輸入乙個區域的資料後,應立即對該區域的資料進行處理(把該區域的樹移走),即對陣列a的下標為start至end的元素值進行修改。可以巢狀乙個迴圈來解決此問題。
**【while (start <= end)】表示遍歷start至end之間的數字(元素下標)。
**【a[start++] = 1】表示將陣列下標為start的元素標記為1,即移走start這個位置的樹。其實就是兩條語句合併成一條:
a[start] = 1;
start++;
最後使用乙個迴圈統計陣列a下標為0至l的元素值等於0的數目。
變數cnt就是最終的結果:剩餘還有多少棵樹。
資料型別:變數l表示馬路長度,其最大值是10000,包含10000公尺,所以陣列的長度應在10001以上。
其他疑問
問:為什麼馬路是從0開始,而不是從1開始呢?
答:其實就像常見的尺子一樣,從刻度為0開始。例如下圖的尺子,有18厘公尺,假設馬路是18公尺,那麼0~18共有19個數字。所以宣告陣列的長度時,要比l的最大值還要大。
執行結果
參考** - c++
題解 一本通1224 最大子矩陣
花兩分鐘靜心看看,望您有所收穫 1224 最大子矩陣 時間限制 1000 ms 記憶體限制 65536 kb 提交數 3073 通過數 1958 已知矩陣的大小定義為矩陣中所有元素的和。給定乙個矩陣,你的任務是找到最大的非空 大小至少是1 11 1 子矩陣。比如,如下 4 4 的矩陣 0 2 7 0...
一本通題解 1251 仙島求藥
一本通 oj,計蒜客 oj,少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應...
一本通 3 1 練習 4 Tree 題解
題目位址 第一眼看到此題,感覺就是一道水題,直接加上前nee dneed need 小的白邊就行了,再處理到n 1 n 1n 1條黑邊,但是,打完後突然發現有問題。雖然加上了前nee dneed need 小的白邊,但是會出現樹不連通的現象,即無法構成生成樹。正解思路 二分乙個增量mid midmi...