题目描述

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

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

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

298

说明

NOIP2005普及组第二题

对于20%的数据,区域之间没有重合的部分;

对于其它的数据,区域之间有重合的情况。

纯属练手

 #include<iostream>
 #include<algorithm>
 #include<cstdio>
 #include<cmath>
 #include<cstring>
 #include<queue>
 #include<vector>
 #include<functional>
 using namespace std;
 struct ST
 {
     int sum,l,r;
 } st[];
 void build(int root,int l,int r)
 {
     st[root].l=l,st[root].r=r;
     if(l==r)
     {
         st[root].sum=;
         return ;
     }
     ;
     build((root<<),l,mid);
     build((root<<|),mid+,r);
     st[root].sum=st[root<<].sum+st[(root<<|)].sum;
 }
 void update(int root,int l,int r,int x,int y)
 {
     if(l>y||r<x||!st[root].sum) return;
     if(x<=l&&r<=y)
     {
         st[root].sum=;
         return;
     }
     ;
     update(root<<,l,mid,x,y);
     update(root<<|,mid+,r,x,y);
     st[root].sum=st[root<<].sum+st[root<<|].sum;
 }
 int main()
 {
     int Len,M,L,R;
     scanf("%d%d",&Len,&M);
     build(,,Len+);
     while(M--)
     {
         scanf("%d%d",&L,&R);
         update(,,Len+,L+,R+);
     }
     printf(].sum);
     ;
 }

最新文章

  1. 【转载】Unity中矩阵的平移、旋转、缩放
  2. IOS低版本遇到了坑不知道你遇到了没
  3. iOS通用的MVC模式项目框架MobileProject
  4. yum综合梳理
  5. SQL删除重复数据
  6. 【Leetcode】【Hard】Merge Intervals
  7. Eclipse / android studio 添加第三方jar包 步骤
  8. 整数区间及区间集合(C#实现)
  9. php实现json
  10. NSException异常处理
  11. 【异构计算】在Windows下使用OpenCL配置
  12. 基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。
  13. elasticsearch(6.2.3)安装Head插件
  14. MT【247】恒成立画图像
  15. 1.RapidIO协议概述
  16. android 使用get和post将数据提交到服务器
  17. (转)CSS书写规范、顺序
  18. CentOS 7 下安装 Nginx(转)
  19. mysql错误:got error 28 from storage engine
  20. antd中fomr中resetFields清空输入框

热门文章

  1. appium python ios 自动化
  2. web前端上传图片的几种方法
  3. win10 uwp 隐藏实时可视化
  4. JS鼠标滚轮事件详解
  5. Xuan.UWP.Framework
  6. python实现进度条和百分比同时显示
  7. 实现ajax的步骤
  8. Vue源码后记-vFor列表渲染(3)
  9. js实现强大功能
  10. JavaScript 中对变量和函数声明的“提前(hoist)”