某校大門外長度為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,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...