P 1047[NOIP 2005普及グループ]校門外の木
タイトルの説明
ある校門の外の長さlの道路には木が並んでいて、2本の隣接する木の間の間隔は1メートルです.私たちは道路を1つの数軸と見なすことができて、道路の一端は数軸0の位置にあって、もう一端はlの位置にあります;数軸上の各整数点、すなわち0,1,2,...,lには、木が植えられている.
道路には地下鉄を建設するための地域があるからです.これらの領域のツリー(領域の端点にある2本のツリーを含む)を移動します.
コード#コード#
各ツリーの位置を文字配列で格納することで、スペースの利用を大幅に削減できます.
ある校門の外の長さlの道路には木が並んでいて、2本の隣接する木の間の間隔は1メートルです.私たちは道路を1つの数軸と見なすことができて、道路の一端は数軸0の位置にあって、もう一端はlの位置にあります;数軸上の各整数点、すなわち0,1,2,...,lには、木が植えられている.
道路には地下鉄を建設するための地域があるからです.これらの領域のツリー(領域の端点にある2本のツリーを含む)を移動します.
コード#コード#
各ツリーの位置を文字配列で格納することで、スペースの利用を大幅に削減できます.
#include
using namespace std;
int main(){
int l,m,i,j,u,v,cnt=0;
char a[10010];
memset(a,'1',sizeof(a));
cin>>l>>m;
for(i=0;i<m;i++){
cin>>u>>v;
for(j=u;j<=v;j++){
if(a[j]=='1') a[j]='0';
}
}
for(i=0;i<=l;i++){
if(a[i]=='1') cnt++;
}
cout<<cnt;
return 0;
}