数树问题(桶排序)
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入
第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点 和终止点的坐标。
输出
包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入
500 3
150 300
100 200
470 471
样例输出
298
#include<stdio.h>
int arr[10010] = { 0 };
int main()
{
?? ?int t = 0;int L = 0;int count = 0;
?? ?scanf("%d %d", &L, &t);
?? ?for (int i = 1;i <= t;i++)
?? ?{
?? ??? ?int n = 0;int m = 0;
?? ??? ?scanf("%d %d", &m, &n);
?? ??? ?for (int j = m;j <= n;j++)
?? ??? ?{
?? ??? ??? ?arr[j] = 1;
?? ??? ?}
?? ?}
?? ?for (int j = 0;j <= L;j++)
?? ?{
?? ??? ?if (arr[j] != 1)
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ?}
?? ?}
?? ?printf("%d\n", count);
?? ?return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!