理工门外的树

Time Limit: 1000 MS Memory Limit: 32768 KB

64-bit integer IO format: %lld , %llu Java class name: Main

[Submit] [Status] [Discuss]

Description

哈尔滨修地铁了~理工门口外长度为N的马路上有一排树,已知两棵树之间的距离都是1m。现在把马路看成是一个数轴,马路的一端在数轴0的位置,另一端在N的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。马路上有一些区域要用来建地铁,这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

Input

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

Output

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

Sample Input

500 3

150 300

100 200

470 471

Sample Output

298

解题思路:差分前缀和,sum数组就是表示所有树的情况。然后遍历sum数组,如果小于0,说明该位置的树被拔掉。

#include<stdio.h>
#include<vector>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
const int maxn = 1e6+20;
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int sum[maxn],a[maxn];
int main(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){memset(sum,0,sizeof(sum));memset(a,0,sizeof(a));int l,r;for(int i = 1; i <=m; i++){scanf("%d%d",&l,&r);if(l > r) swap(l,r);a[l+1] -= 1;a[r+1+1] += 1;}int ans = 0;for(int i = 1; i <= n+1; i++){sum[i] = sum[i-1] + a[i];}for(int i = 1; i <= n+1; i++){if(sum[i] < 0){ans++;}}printf("%d\n",n+1-ans);}return 0;
}

  

转载于:https://www.cnblogs.com/chengsheng/p/5336731.html

HRBUST 1909——理工门外的树——————【离线处理,差分前缀和】相关推荐

  1. HDU - 4417 Super Mario(主席树/线段树+离线)

    题目链接:点击查看 题目大意:给出由 n 个数的数列,再给出 m 次查询,每次查询需要输出 [ l , r ] 内小于等于 h 的数有多少个 题目分析:大晚上睡不着觉随便做做题,发现这个题目原来可以用 ...

  2. SPOJ - DQUERY D-query(莫队/线段树+离线/主席树)

    题目链接:点击查看 题目大意:给出一个由n个数组成的序列,再给出m次查询,每次查询区间[l,r]中有多少个不同的数 题目分析:莫队模板题,直接套板子就好了 有点意思的是函数返回值为布尔类型,然后没有r ...

  3. Super Mario HDU - 4417(主席树解决区间数字小于k的个数||线段树+离线)

    Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...

  4. HDU 4417 Super Mario(线段树离线处理/主席树)

    Mario is world-famous plumber. His "burly" figure and amazing jumping ability reminded in ...

  5. HDU 4417-Super Mario-线段树+离线

    Description Mario is world-famous plumber. His "burly" figure and amazing jumping ability ...

  6. 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)

    题干: 给出一个n+1个点的树,以及p个点对,需要断开一些点,使得这p个点对路径不连通.输出应该断开的最少点数. 解题报告: 从那p个点对入手的话:首先考虑只有一对点的话,肯定是这条路径上的随便一个点 ...

  7. P3353 在你窗外闪耀的星星————树状数组,前缀和

    题解:本题主要考查树状数组的区间之和的最大值,用树状数组和前缀和(注意:一个位子可以放多个点) 代码如下: #include<iostream> #include<algorithm ...

  8. hdu 4605 Magic Ball Game (在线主席树/离线树状数组)

    版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4605 题意: 有一颗树,根节点为1,每一个节点要么有两个子节点,要么没有,每个节点都有一个权值wi .然后,有一个球,附带值x . 球 ...

  9. 【BZOJ4231】回忆树 离线+fail树+KMP

    [BZOJ4231]回忆树 Description 回忆树是树. 具体来说,是n个点n-1条边的无向连通图,点标号为1~n,每条边上有一个字符(出于简化目的,我们认为只有小写字母). 对一棵回忆树来说 ...

最新文章

  1. iOS 11开发教程(一)
  2. 批处理 操作mysql_超简单使用批处理(batch)操作数据库
  3. matlab自动重合闸,电力系统自动重合闸matlab仿真 - 图文
  4. 今天开始SOA-阿里dubbo
  5. IBatis.Net学习笔记二--下载、编译、运行NPetShop
  6. 【并行计算-CUDA开发】显卡两大生产商
  7. Mybatis注解实现一对多关联映射(@Many)
  8. Django 模板语言 标签
  9. 【转】D365 FO第三方集成(三)---服务实现
  10. Struts2_1_基础案例_配置文件详解_动作类
  11. MySQL数据库的权限管理
  12. Tomcat爆出严重漏洞,影响所有版本,波及约8万台服务器,附解决方案!(扩散!!!)...
  13. Postgresql安装配置win版本
  14. 什么是 ID Token
  15. 硕士生写小论文的经验(转载)
  16. ActivityThread: Performing stop of activity that is not resumed:
  17. 服务器运维1-failed to start LSB
  18. Android Studio 连接阿里云数据库【制作基于数据库的多人远程聊天APP】
  19. 矢量点积与矢量叉乘的微分
  20. 前端最有成就感一—-封装

热门文章

  1. liferay 如何添加css或者js
  2. 右手螺旋判断磁感应强度方向_高中物理第11章 电磁感应(汇总58个动画视频)
  3. php禁用cookie后session设置方法分析
  4. Nutch+Hadoop集群搭建
  5. 【搜索引擎基础知识2】网络爬虫的介绍
  6. python中使用pickle进行序列化
  7. 推荐系统论文DSIN:Deep Session Interest Network
  8. 图解“红黑树”原理,一看就明白!
  9. 剑指OFFER之跳台阶(九度OJ1388)
  10. TOML-To-Go 更新,支持暗黑模式