华师一附中OI组
标题:
P1047 校门外的树
[打印本页]
作者:
admin
时间:
2018-4-19 14:18
标题:
P1047 校门外的树
题目描述
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入输出格式
输入格式:
输入文件tree.in的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出格式:
输出文件tree.out包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
输入输出样例
输入样例#1:
500 3
150 300
100 200
470 471
输出样例#1:
298
说明
NOIP2005普及组第二题
对于20%的数据,区域之间没有重合的部分;
对于其它的数据,区域之间有重合的情况。
作者:
xpb
时间:
2018-4-20 21:08
#include<iostream>
using namespace std;
const int mn=10001;
int l,m,s[mn],e[mn],k[mn],i,j,numb;
int main()
{
cin>>l>>m;
for(i=1; i<=m; i++)
{
cin>>s[i]>>e[i];
}
for(i=0; i<=l; i++)
{
k[i]=1;
}
for(i=1; i<=m; i++)
{
for(j=s[i]; j<=e[i]; j++)
{
k[j]=0;
}
}
for(i=0; i<=l; i++)
{
if(k[i]==1)
{
numb++;
}
}
cout<<numb;
return 0;
}
复制代码
作者:
张笑宇
时间:
2018-4-22 21:03
本帖最后由 张笑宇 于 2018-4-22 21:05 编辑
<div class="blockcode"><blockquote>#include<iostream>
using namespace std;
const int mx=10010;
int a[mx],b[mx],c[mx];
int i,j;
int l,n;
int main()
{
cin>>l>>n;
for (i=1;i<=n;i++) cin>>a[i]>>b[i];
for (i=0;i<=mx-1;i++) c[i]=true;
for (i=1;i<=n;i++)
{
for (j=a[i];j<=b[i];j++) c[j]=false;
}
int sum=0;
for (i=0;i<=l;i++) if (c[i]==true) sum++;
cout<<sum;
return 0;
}
复制代码
作者:
GTR
时间:
2018-5-4 23:07
程序:
#include <iostream>
using namespace std;
int l,m;
int main ()
{
cin>>l>>m;
int *p=new int [l+1];
for(int i=0;i<l+1;i++)
*(p+i)=1;
for(int i=0;i<m;i++)
{
int t1,t2;
cin>>t1>>t2;
for(int j=t1;j<=t2;j++)
*(p+j)=0;
}
int count=0;
for(int i=0;i<l+1;i++)
if(*(p+i)) count++;
cout<<count<<endl;
return 0;
}
作者:
WJL
时间:
2018-5-25 23:01
#include <iostream>
using namespace std;
int main ()
{
int l,m;
cin>>l>>m;
int *p=new int [l+1];
for(int i=0;i<l+1;i++)
*(p+i)=1;
for(int i=0;i<m;i++)
{
int temp1,temp2;
cin>>temp1>>temp2;
for(int j=temp1;j<=temp2;j++)
*(p+j)=0;
}
int count=0;
for(int i=0;i<l+1;i++)
if(*(p+i)) count++;
cout<<count<<endl;
return 0;
}
复制代码
作者:
倚窗倾听风吹雨
时间:
2018-6-27 21:34
#include<iostream>
using namespace std;
int l,m,i,j,s=0;
int main()
{
cin>>l>>m;
int a,b,t[l];
for(i=0;i<=l;i++)
t[i]=1;
for(i=0;i<=m-1;i++)
{
cin>>a>>b;
for(j=a;j<=b;j++)
t[j]=0;
}
for(i=0;i<=l;i++)
if(t[i]==1)s++;
cout<<s;
return 0;
}
复制代码
作者:
universehyf
时间:
2018-6-30 23:57
#include<iostream>
using namespace std;
int a[10001]={};
int main()
{
int m,n,d,b,c=0;
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>d>>b;
for(int j=d;j<=b;j++) a[j]=1;
}
for(int i=0;i<=m;i++)
if(!a[i]) ++c;
cout<<c;
return 0;
}
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2