一本通題解 題解一維陣列 1107 校門外的樹

2021-10-16 07:26:36 字數 2896 閱讀 2701

時間限制: 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...