九度oj题目1088:剩下的树解题报告

    xiaoxiao2021-03-25  65

    题目1088:剩下的树

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:9038

    解决:4165

    题目描述:

        有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。     现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。     可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

    输入:

        两个整数L(1<=L<=10000)和M(1<=M<=100)。     接下来有M组整数,每组有一对数字。

    输出:

        可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。

    样例输入: 500 3 100 200 150 300 470 471 样例输出: 298 解题思路:用数组标记法做很简单 源代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include<string.h> #include<ctype.h> #include<stdio.h>   int main() {     int l,m,i,j,k,count;     int flag[10010],num1,num2;      while ( scanf ( "%d" ,&l)!=EOF){              count=0;      for (i=0;i<10010;i++)          flag[i]=0;           for (i=0;i<=l;i++)          flag[i]=1;           scanf ( "%d" ,&m);               for (i=0;i<m;i++) {                   scanf ( "%d%d" ,&num1,&num2);                     for (j=num1;j<=num2;j++){                      flag[j]=0;                     }                          }          for (i=0;i<=l;i++)          if (flag[i]==1){              count++;          }                printf ( "%d\n" ,count);                      }                      return 0;          }   /**************************************************************      Problem: 1088      User: kaoyandaren123      Language: C      Result: Accepted      Time:50 ms      Memory:912 kb ****************************************************************/
    转载请注明原文地址: https://ju.6miu.com/read-34794.html

    最新回复(0)