1. 程式人生 > >百鍊POJ 2808 校門外的樹

百鍊POJ 2808 校門外的樹

分析 這個問題可以概括為輸入一個大的整數閉區間,及一些可能相互重疊的在該大區間內的小的整數閉區間。在大的整數閉區間內去除這些小的整數閉區間,問之後剩下的可能不連續的整數區間內有多少個整數。 可以採用用空間換時間的方法,用一個數組來模擬這些區間,類似於位向量的辦法。在陣列中一個數代表一棵樹,若沒移走,為1,移走為0。每輸入一個區間,就將區間內的數置為0,最後統計1的個數即為剩餘的樹的棵樹。 程式碼 #include<iostream>
using namespace std;
int main()
{
int l,m,i,j;
int a[10001];
for(i=0;i<10001;i++)
a[i]=1;
cin>>l>>m;
int begin,end;
while(m--)
{
cin>>begin>>end;
for(j=begin;j<=end;j++)
a[j]=0;
}
int count=0;
for(i=0;i<=l;i++)
{
if(a[i]==1)
count++;
}
cout<<count<<endl;
}
經驗: 學會使用一些資料結構簡化程式設計過程。