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,问第几个操作使数列中出现负数. 思路: 暴力显然过不了,那么就可以优化了,不难想到线段树,显然需要良好的姿势,那么就差分 ...
随机推荐
- Metasploit自动攻击模块
Metasploit自动攻击模块 Usage: db_autopwn [options] -h Display this help text -t Show all matching exploit ...
- 理解Thread.sleep()函数
转载自:http://www.cnblogs.com/ILove/archive/2008/04/07/1140419.html 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间 ...
- 基本的bash shell
一.linux文件系统 linux文件系统结构是从Unix文件结构演进过来的.在linux文件系统中,通用的目录名用于表示一些常见的功能.如下表列出一些较为常见的Linux顶层虚拟目录名及其内容. / ...
- 在vCenter上创建新用户 (适用版本6.0)
- java类的加载与初始化
https://blog.csdn.net/u013349237/article/details/71076617 1在命令行启动虚拟机jvm进行加载, 2用class.forname()方法进行动态 ...
- springboot中MongoDB的使用
转载参考:http://www.ityouknow.com/springboot/2017/05/08/spring-boot-mongodb.html MongoDB 是一个高性能,开源,无模式的文 ...
- HTML5 canvas绘制图形
demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- BZOJ3508 开灯 & [校内NOIP2018模拟20181027] 密码锁
Time Limit: 10 Sec Memory Limit: 128 MB Description xx作为信息学界的大神,拥有众多的粉丝.为了感谢众粉丝的爱戴,xx决定举办一场晚会.为了气派,x ...
- Codeforces 958C3 - Encryption (hard) 区间dp+抽屉原理
转自:http://www.cnblogs.com/widsom/p/8863005.html 题目大意: 比起Encryption 中级版,把n的范围扩大到 500000,k,p范围都在100以内, ...
- ThreadPoolExecutor扩展
import java.util.concurrent.*; /** * ThreadPoolExecutor扩展 */ public class ExtThreadPool { public sta ...