codevs 1097 校门外的树 2005年NOIP全国联赛普及组 (线段树)
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入第一行有两个整数L(1<=L<=10000)和M(1<=M<=100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
500 3
150 300
100 200
470 471
298
【数据规模】
对于20%的数据,区域之间没有重合的部分;
对于其它的数据,区域之间有重合的情况。
#include <cstdio>
#define Max 10000
struct Tree
{
int l,r,dis,lazy;
}tr[Max*+];
int L,M;
void up(int k)
{
tr[k].dis=tr[k<<].dis+tr[k<<|].dis;
}
void build(int k,int l,int r)
{
tr[k].l=l;tr[k].r=r;
if(l==r)
{
tr[k].dis=;
return;
}
int mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
up(k);
}
void down(int k)
{
if(tr[k].l==tr[k].r) return;
tr[k<<].lazy+=tr[k].lazy;
tr[k<<|].lazy+=tr[k].lazy;
if(-*tr[k].lazy*(tr[k<<].r-tr[k<<].l+)<=tr[k<<].dis)
tr[k<<].dis+=tr[k].lazy*(tr[k<<].r-tr[k<<].l+);
else tr[k<<].dis=;
if(-*tr[k].lazy*(tr[k<<|].r-tr[k<<|].l+)<=tr[k<<|].dis)
tr[k<<|].dis+=tr[k].lazy*(tr[k<<|].r-tr[k<<|].l+);
else tr[k<<|].dis=;
}
void change_section(int k,int l,int r,int v)
{
if(tr[k].l==l&&tr[k].r==r)
{
if(tr[k].dis>=-*v*(r-l+))
tr[k].dis+=v*(r-l+);
else tr[k].dis=;
tr[k].lazy+=v;
return;
}
if(tr[k].lazy) down(k);
int mid=(tr[k].l+tr[k].r)>>;
if(l>mid) change_section(k<<|,l,r,v);
else if(r<=mid) change_section(k<<,l,r,v);
else change_section(k<<,l,mid,v),change_section(k<<|,mid+,r,v);
up(k);
}
int main()
{
scanf("%d%d",&L,&M);
build(,,L);
for(int x,y;M--;)
{
scanf("%d%d",&x,&y);
change_section(,x,y,-);
}
printf("%d",tr[].dis);
return ;
}
codevs 1097 校门外的树 2005年NOIP全国联赛普及组 (线段树)的更多相关文章
- codevs 1102 采药 2005年NOIP全国联赛普及组
1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB gold 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最 ...
- 1102 采药 2005年NOIP全国联赛普及组
1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子 ...
- codevs 1094 FBI树 2004年NOIP全国联赛普及组 x
题目描述 Description 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. ...
- code vs 1094 FBI树 2004年NOIP全国联赛普及组
题目描述 Description 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树[1],它的结点类型 ...
- Codevs 1140 Jam的计数法 2006年NOIP全国联赛普及组
1140 Jam的计数法 2006年NOIP全国联赛普及组 传送门 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Jam是个喜欢标 ...
- 采药 2005年NOIP全国联赛普及组&疯狂的采药
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望 ...
- Codevs 1105 过河 2005年NOIP全国联赛提高组
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一座独木桥,一只青蛙 ...
- 1010 过河卒 2002年NOIP全国联赛普及组codevs
1010 过河卒 2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...
- 过河 2005年NOIP全国联赛提高组(离散化+dp)
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一 ...
随机推荐
- TypeScript完全解读(26课时)_13.TypeScript完全解读-高级类型(2)
13.TypeScript完全解读-高级类型(2) 高级类型中文网的地址:https://typescript.bootcss.com/advanced-types.html 创建文件并在index. ...
- VR视频原理
VR视频,这里指的是沉浸式全景视频,基本场景是观影者戴上显示头盔(如cardboard),在其中通过头部的转动可以看到全景视频的每个方向的图像.同时也能听到来自各个方向的声音,声音也会随着头部的转动而 ...
- LeetCode: 292 Nim Game(easy)
题目: You are playing the following Nim Game with your friend: There is a heap of stones on the table, ...
- phpstrom安装bootstrap3插件
1.步骤 File > > Settings > >Plugins > > 搜索bootstrap 3 然后点击 Browse repositories 就会有一个 ...
- lightoj刷题日记
提高自己的实力, 也为了证明, 开始板刷lightoj,每天题量>=1: 题目的类型会在这边说明,具体见分页博客: SUM=54; 1000 Greetings from LightOJ [简单 ...
- 利用Web服务生成产品编号 执行添加操作
为什么我想要执行添加操作,却添加不成功,系统提示我comm.ExecuteNonQuery有错误 已找到原因 在 string strsql = "insert into tb_goods( ...
- luoguP3808[模板]AC自动机(简单版)
传送门 ac自动机模板题,裸的多串匹配 代码: #include<cstdio> #include<iostream> #include<algorithm> #i ...
- math(2018.10.27)
20%的数据直接暴搜就行,接下来我们考虑哪些数不能够出现在同一个集合中,就连一 条边,我们会发现前
- niushop,优秀的国产开源电商系统体验
前几天,小编发布了国产电商开源系统推荐,有个小伙伴后台留言说niushop不错. 先别管这么多,盘他! 我这里下载的是B2C单商户免费版 先把源码下载下来.安装之前先看看niushop的环境要求. P ...
- Devc++贪吃蛇
使用Devc++写的一个简单版贪吃蛇程序,不过,在未配置之前,是不包含图形库的,所以需要自己配置新的环境 ----------------------------------------------- ...