zoukankan      html  css  js  c++  java
  • 洛谷 P1047 校门外的树(待完善)

    链接:https://www.luogu.org/problemnew/show/P1047

    题目:

      题目描述

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

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

      输入输出格式

      输入格式:

      第一行有22个整数L(1 le L le 10000)L(1L10000)和M(1 le M le 100)M(1M100),LL代表马路的长度,MM代表区域的数目,LL和MM之间用一个空格隔开。
      接下来的MM行每行包含22个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

      输出格式:

      11个整数,表示马路上剩余的树的数目。

      输入输出样例

      输入样例#1:
      500 3
      150 300
      100 200
      470 471
    
      输出样例#1: 
      298

    思路:

      这题我做的方法一点艺术性没有,建立数组表示树,开始置为1,被砍了就置为0,最后统计数组的总数。数据也不是很大,所以这样也不会超时。

      倒是在题解上发现了一些有趣的方法,比如线段树和差分法,这篇博客等有空了我要完善一下,增加新的方法。

    代码:

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int L,M;
     8     cin>>L>>M;
     9     int a[L+1];
    10     for(int i=0;i<=L;i++)
    11     {
    12         a[i]=1;
    13     }
    14     for(int i=0;i<M;i++)
    15     {
    16         int s,e;
    17         cin>>s>>e;
    18         for(int j=s;j<=e;j++)
    19             a[j]=0;
    20     }    
    21     int sum = 0;
    22     for(int i=0;i<=L;i++)
    23     {
    24         if(a[i]==1)
    25             sum++;
    26     }
    27     cout<<sum;
    28     return 0;
    29 } 
  • 相关阅读:
    Delphi2007下cxComboBox乱码.
    DelphiIOCP 学习笔记<六>=====IO内存池和扩展套接字(ClientContext)
    DelphiIOCP学习笔记<三>====工作线程和Listener
    DelphiIOCP学习笔记<二>====IOCP基本函数介绍和理解
    word比较两个文件
    SQLite3 简记
    DXP_protel2004_原理图设计基础_新建和添加原理图库文件_元件编辑范例
    DXP_protel2004_原理图设计基础_新建和添加原理图库文件
    网页表格颜色搭配
    excle密码破解
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11136428.html
Copyright © 2011-2022 走看看