【題目連結】
ybt 1107:校門外的樹
ybt 1931:【05NOIP普及組】校門外的樹
OpenJudge NOI 1.6 06:校門外的樹
【題目考點】
1. 數組
2. 模拟
【解題思路】
用數組模拟各位置是否有樹
- 設布爾類型數組a,a[i]表示第i位置是否有樹
- 先将0~L的位置都設為有樹,把對應數組元素設為true
- 把每個劃定的區域設為無樹,把對應數組元素設為false
- 最後統計還剩下多少樹,即數組a的0~L的位置中,還有多少個元素為true。
【題解代碼】
解法1:
#include <bits/stdc++.h>
using namespace std;
int main()
{
bool a[10005];//如果位置i有樹,a[i]儲存為true,否則儲存為false
int l, m, start, end, s = 0;//s:樹木數量統計
cin>>l>>m;
for(int i = 0; i <= l; ++i)//a[0]~a[m]先設為有樹
a[i] = true;
for(int i = 0; i < m; ++i)//m個區域
{
cin>>start>>end;//輸入每個區域的起始點和終止點
for(int j = start; j <= end; ++j)//a[start]到a[end]設為無樹
a[j] = false;
}
for(int i = 0; i <= l; ++i)
{
if(a[i])
s++;//或将這兩行寫為 s += a[i];
}
cout<<s;
return 0;
}