zoukankan      html  css  js  c++  java
  • 校门外的树

    问题 c: 校门外的树

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 6  解决: 4
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

    某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即012,……,L,都种有一棵树。

    由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

    输入

    输入文件tree.in的第一行有两个整数L1 <= L <= 10000)和 M1 <= M <= 100),L代表马路的长度,M代表区域的数目,LM之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

    输出

    输出文件tree.out包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

    样例输入

    500 3
    150 300
    100 200
    470 471

    样例输出

    298



    解题思路:创建一个数组a[10005]用于标记每个端点的树是否在输入的区间上,最后用一个for循环判断,每有一个未被标记的树则sum++,最后输出sum
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int a[10005];
    int sum=0;
    
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            memset(a,0,sizeof(a));
            sum=0;
            while(m--)
            {
                int st,en;
                cin>>st>>en;
                for(int i=st;i<=en;i++)
                {
                    a[i]=1;//让所有在区间内的树的标记值为1
                }
            }
            for(int i=0;i<=n;i++)
            {
                if(!a[i])sum++;//如果树未被标记,则sum++
            }
            cout<<sum<<endl;
        }
        return 0;
    }
    

      



  • 相关阅读:
    利用杨辉三角和阶乘计算组合数
    验证字符串是否为回文数
    利用线性同余产生伪随机数+可变参数使用
    根据RandomStr.java:使用类型转换生成六位验证字符串。
    Java语言基础问题
    从命令行输入参数值,输出求和值。
    愚公移山_节选(伪代码)
    CodeForces
    CodeForces
    E
  • 原文地址:https://www.cnblogs.com/wjw2018/p/9282581.html
Copyright © 2011-2022 走看看