#include<stdio.h>
int main()
{
int l,m,i,j,k=0,sum=0,a[100],b[100],c[100];
scanf("%d%d",&l,&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&a[i],&b[i]);
c[i]=b[i]-a[i]+1;
}
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)//将a[i] b[i]与数组后面各值比较
{
if(a[j]>a[i]&&a[j]<b[i])
k+=b[i]-a[j]+1; //k为重合总值,注意OBOB!
else if(b[j]>a[i]&&b[j]<b[i])
k+=b[j]-a[i]+1;
}
for(i=0;i<m;i++)
{
sum+=c[i]; // sum为区域的始末坐标总差值
}
printf("%d\n",l+1-sum+k); //马路上的总树数为l+1
return 0;
}
[ New Thread ]
Problem 1251 >> 校门外的树 vc过了啊 |
201803010130 @ 2019-04-13 21:20:57
|
201703120121 @ 2019-04-14 16:57:43
算法有问题,重和值k会被重复统计。
|