luoguP1083 借教室(题解)(我用的线段树)
#include<cstdio>
#include<iostream>
#include<cmath>
#include<string>
#include<string>
#include<algorithm>
#define rg register
#define N 1000050
#define lc now<<1
#define rc (now<<1)+1
using namespace std; int n,m;
bool flag;
int a[N];
struct tree{
int l,r,minn,lazy;
}ljl[N<<]; inline int read()
{
int s=,m=;char ch=getchar();
while(ch!='-'&&(ch<''||ch>''))ch=getchar();
if(ch=='-')m=-,ch=getchar();
while(ch>=''&&ch<='')s=(s<<)+(s<<)+ch-'',ch=getchar();
return s*m;
} void build(int now,int ll,int rr)
{
if(ll==rr)
{
ljl[now].l=ljl[now].r=ll;
ljl[now].minn=a[ll];
}
else
{
int mid=(ll+rr)>>;
build(lc,ll,mid);
build(rc,mid+,rr);
ljl[now].l=ll;ljl[now].r=rr;
ljl[now].minn=min(ljl[lc].minn,ljl[rc].minn);
}
} void push_down(int now)
{
if(ljl[now].lazy!=)
{
ljl[lc].lazy+=ljl[now].lazy;
ljl[rc].lazy+=ljl[now].lazy;
ljl[lc].minn-=ljl[now].lazy;
ljl[rc].minn-=ljl[now].lazy;
ljl[now].lazy=;
}
} void xiugai(int now,int ll,int rr,int d)
{
push_down(now);
if(ljl[now].l==ll&&ljl[now].r==rr)
{
ljl[now].lazy+=d;
ljl[now].minn-=d;
// if(ljl[now].minn<0)flag=1;
}
else
{
int mid=(ljl[now].l+ljl[now].r)/;
if(rr<=mid)xiugai(*now,ll,rr,d);
if(ll>mid)xiugai(*now+,ll,rr,d);
if(ll<=mid&&rr>mid)
{
xiugai(*now,ll,mid,d);
xiugai(*now+,mid+,rr,d);
}
ljl[now].minn=min(ljl[lc].minn,ljl[rc].minn);
}
} int main()
{
n=read();m=read();
for(rg int i=;i<=n;++i)a[i]=read();
build(,,n);
for(rg int i=;i<=m;++i)
{
rg int num=read(),st=read(),et=read();
xiugai(,st,et,num);
if(ljl[].minn<)
{
printf("-1\n%d\n",i);
exit();
}
}
puts("");
return ;
}
luoguP1083 借教室(题解)(我用的线段树)的更多相关文章
- NOIp 2012 #2 借教室 Label:区间修改线段树
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- NOIP 2012 Day2T2 借教室题解
NOIP 2012 Day2T2 借教室题解 题目传送门:http://codevs.cn/problem/1217/ 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动 ...
- 洛谷P1083 借教室 题解
题目 [NOIP2012 提高组] 借教室 题解 这道题是几周之前做到的一道题,本来不想讲的,因为这道题也是用到了二分答案的方法,这类题目之前已经发布过两篇题解了.但这道题还运用了差分数组这个思想,所 ...
- [NOIP2012提高]借教室 题解(二分答案+差分)
[NOIP2012提高&洛谷P1083]借教室 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室 ...
- noip借教室 题解
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- 洛谷P1083借教室题解
题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...
- tyvj 2075 借教室 题解
P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...
- 洛谷 P1083 借教室 题解
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- [NOIP2012]借教室 题解
题目大意: 有一个n个数的数列,m个操作,第i个操作使[li,ri]区间建di,问第几个操作使数列中出现负数. 思路: 暴力显然过不了,那么就可以优化了,不难想到线段树,显然需要良好的姿势,那么就差分 ...
随机推荐
- 【学习总结】Eclipse常用快捷键
相关博文 [JAVA]eclipse-Introduction
- OC学习--继承
1.什么是继承? 继承是指一个对象直接使用另一对象的属性和方法. 继承可以使得子类具有父类的各种属性和方法,而不是再次编写相同的代码.在子类继承父类的同时,可以重新定义某些属性,并重写某些方法, 即 ...
- sendmail 出现 My unqualified host name的解决办法
有"My unqualified host name"错误 修改/etc/hosts, 在本机的ip那一行, 在xxxhostname后面加上" xxxhostname ...
- Java并发(具体实例)—— 构建高效且可伸缩的结果缓存
这个例子来自<Java并发编程实战>第五章.本文将开发一个高效且可伸缩的缓存,文章首先从最简单的HashMap开始构建,然后分析它的并发缺陷,并一步一步修复. hashMap版本 ...
- robotframework的if else
- mysql安装 demo [linux centos7] [5.7.26]
MySQL 安装配置 https://www.runoob.com/linux/mysql-install-setup.html =================================== ...
- Window平台下tree 命令使用
WIndow 平台要想打印目录树,可以用cmd工具或者power shell 的tree命令实现 tree 命令格式和参数: TREE [drive:][path] [/F] [/A] /F 显示每个 ...
- FMXUI TEXTVIEW代码设置IMAGEINDEX
FMXUI作为一个开源的控件,真是DELPHIER的福音,向作者致敬.TEXTVIEW非常好用,在属性面板中有ImageIndex属性,可以方便设置图标,在实际应用中图标状态需要改变,但在代码设置时 ...
- POJ 3348 Cows (凸包模板+凸包面积)
Description Your friend to the south is interested in building fences and turning plowshares into sw ...
- 【FPGA】 007 --Verilog中 case,casez,casex的区别
贴一个链接:http://www.cnblogs.com/poiu-elab/archive/2012/11/02/2751323.html Verilog中 case,casez,casex的区别 ...