F: Baldheaded stronger
来源:互联网 发布:网络上芒果是什么意思 编辑:程序博客网 时间:2024/06/16 05:26
题解
这个可以用,结构体排序做,线段树新,树状数组。当初给我们开题时用的结构体排序做的。比赛完了的时候,学长讲了最简单的方法,数组前缀和,加标记。就很简单,代码量也少。
Baldheaded stronger
时间限制: 1 Sec 内存限制: 128 MB 提交: 161 解决: 20 [提交][提交的状态][讨论] 题目描述
东软的校门外长度为L的马路上很有多颗树,每两棵相邻的树之间的间隔是1米。我们可以简化的把马路看成一个数轴,马路的一端在数轴中x=0的位置,另一端在x=L的位置;数轴上的每个整数点即0,1,2,3……L,都种有一棵树。现在光头强——平头!出现了。他要把其中一些区域中的树全部砍走。已知任一区域中的起点和终点都是整数,区域之间可能有重合的部分。现在你的任务是计算这些树被平头砍走后,马路上还剩下多少棵树。
输入
题目数据有多组,对于每组的数据:
第一行输入两个数L(1 <= L <= 500000)和m(1 <= m <= 10000)。L代表马路的长度,m代表平头要砍树的区域数目。
然后接下来m行中每行有两个数left和right(0 <= left <= right <= L),表示一个区域的起点和终点坐标。
输出
对于每组测试数据输出一个数,表示马路上剩余树的数目。
样例输入
500 3
150 300
100 200
470 471
样例输出
298
提示
平头强!平头很强!
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=5e5+10;int main(){ int n,m,l,r,ans; int a[N]; while(cin>>n>>m) { ans=0; memset(a,0,sizeof(a)); while(m--) { cin>>l>>r; a[l]++; ///把起始标记为1,末尾的后一位标记为-1; a[r+1]--; ///求前缀和的时候就能把区间砍掉的树标记掉,同时在未区间后前缀和重新标记为0,代表没砍; } for(int i=1; i<=n; i++) { a[i]=a[i-1]+a[i]; } for(int i=0;i<=n;i++) { if(!a[i]) ///记录没砍的树,数组为0就ans++ ans++; } cout<<ans<<endl; } return 0;}
阅读全文
0 0
- F: Baldheaded stronger
- F - Faster, Higher, Stronger --- (first qualifying)
- stronger
- stronger Google Desktop
- to be stronger
- Working harder, getting stronger!
- zoj2970----------------Faster, Higher, Stronger
- Stronger [britney spears]
- Faster, Higher, Stronger
- zoj2970 Faster, Higher, Stronger
- YOLO9000: Better, Faster, Stronger
- YOLO9000: Better,Faster,Stronger
- ZOJ2970-Faster, Higher, Stronger
- YOLO9000: Better, Faster, Stronger
- ZOJ 2970 Faster, Higher, Stronger
- zoj-2970-Faster, Higher, Stronger
- ZOJ 2970Faster, Higher, Stronger
- 【笔记】YOLO9000: Better, Faster, Stronger
- tomcat配置-修改部署站点的标题栏站点图标
- 平方根法
- 为什么我们需要nginx
- 文章标题
- 图论学习之二分图(二)二分图匹配的相关概念及定理
- F: Baldheaded stronger
- 从变量类型角度分析——重写和重载
- 40个Java集合面试问题和答案
- 采用QTP11.0对access数据库的连接
- Spring-AOP的代理模式
- dns配置大全,你值得拥有!
- 跨平台移动开发工具:Cordova VS Weex
- 运动员最佳配对问题(回溯)
- 心少朴