P1047 校門外的樹

2021-08-17 07:34:44 字數 1123 閱讀 7006

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置;數軸上的每個整數點,即0,1,2,……,l,都種有一棵樹。

由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走後,馬路上還有多少棵樹。

剛開始,我想通過判斷相鄰區間的右端點和左端點,來確定是否相交。但是提交,總是有幾個測試點通不過。

然後,通過看別人的思路,我看到了乙個非常簡單的思路。可能是我把問題想得太複雜了。

就我知道而言該題有三種做法:

陣列標記法

#include

using

namespace

std;

int main()

while(m--)

}for(int i = 0;i<=l;i++)

cout

0;}

端點判斷法

#include

#include

using

namespace

std;

int l,m;

int nstart,nend;

int sum = 0;

int q=1;

struct nodesection[101];

int mysort(node x, node y)

int main()

//排序

sort(section+1,section+m+1,mysort);

//如果前面區間的右端點小於後面區間的左端點,則相交

//如果前面區間的右端點大於後面區間的右端點,則重合

//下面為構造新區間,將合併重合的組成乙個新區間

for(int i=2;i<=m;i++)

for(int i = 1;i<=q;i++)

cout

<1

0;}

個人部落格:陪你一起終身學習!|嶽金釗&個人部落格

P1047 校門外的樹

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...

P1047 校門外的樹

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...

P1047 校門外的樹

題目描述 某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...