LuoGu P1083 借教室
借教室这个题有两种做法,差分+前缀和或者是线段树
线段树维护区间最小值,因为能不能借教室使用是由这几天中可用教室最少的一天决定的
其实这题是个很裸的线段树维护区间最小值,但有一点需要注意,区间最小值在进行加减修改时不能乘以区间长度
很简单,不论区间长度怎么样,你整个区间-x,最小值也减小了x,而不会是x*length,我因为这一点WA了两次(不知为啥,最近智商捉急)
之后就A掉了
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#define mid ((l+r)>>1)
#define ls (rt<<1)
#define rs (rt<<1|1)
#define min(a,b) (a<b?a:b)
#define pushup(rt) t[rt].data=min(t[ls].data,t[rs].data)
using namespace std;
const int N=1e6+5;
struct segtree{
int left,right;
int data,tag;
inline int size(){return right-left+1;}
}t[(N<<2)];
int n,ans,f=true,tt;
int tot,s,cnt,v[N],m;
inline void build(int rt,int l,int r){
t[rt].left=l;t[rt].right=r;t[rt].tag=0;
if(l==r){
t[rt].data=v[l];
return ;
}
build(ls,l,mid);build(rs,mid+1,r);
pushup(rt);return ;
}
inline void pushdown(int rt){
if(t[rt].tag!=0){
t[ls].tag+=t[rt].tag;
t[rs].tag+=t[rt].tag;
t[ls].data+=t[rt].tag;
t[rs].data+=t[rt].tag;
t[rt].tag=0;
}
return ;
}
inline void update(int rt,int num){
int l=t[rt].left,r=t[rt].right;
if(s<=l&&r<=tt){
if(t[rt].data>=tot){
t[rt].data-=tot;
t[rt].tag-=tot;
}else{
f=false;
ans=num;
}
return ;
}
if(!f) return ;
pushdown(rt);
if(s<=mid) update(ls,num);
if(tt>mid) update(rs,num);
pushup(rt);return ;
}
int main(){
scanf("%d%d",&n,&m);
for(register int i=1;i<=n;++i) scanf("%d",&v[i]);
build(1,1,n);
for(register int i=1;i<=m;++i){
scanf("%d%d%d",&tot,&s,&tt);
update(1,i);
}
if(f) puts("0");
else{
puts("-1");
printf("%d\n",ans);
}
return 0;
}
LuoGu P1083 借教室的更多相关文章
- luogu P1083 借教室 x
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- Luogu P1083 借教室【二分答案/差分】By cellur925
题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海 ...
- [NOIp2012] luogu P1083 借教室
该*的英语,这么长还要背. 题目描述 你有 nnn 个数 ai{a_i}ai,mmm 次操作,每次操作将 [l,r][l,r][l,r] 区间的每个数减去 ccc.要求任何时刻 ∀x∈[1,n]\f ...
- Luogu 1083 借教室(二分,差分)
Luogu 1083 借教室(二分,差分) Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不 ...
- P1083 借教室(差分+二分)
P1083 借教室 第一眼:线段树. 然鹅懒得写. 正解:差分+二分. 显然订单合法的上线可以二分 然后差分数组维护一下.没了. #include<iostream> #include&l ...
- 洛谷P1083 借教室
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- 【题解】洛谷 P1083 借教室
目录 题目 思路 \(Code\) 题目 P1083 借教室 思路 线段树.需要的操作为区间修改,区间查询.维护每个区间的最小值就好. \(Code\) #include<iostream> ...
- 洛谷 P1083 借教室 题解
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- VIjos——V 1782 借教室 | | 洛谷——P1083 借教室
https://vijos.org/p/1782|| https://www.luogu.org/problem/show?pid=1083 描述 在大学期间,经常需要租借教室.大到院系举办活动,小到 ...
随机推荐
- 10.tesseract
1.Tesseract-OCR简介 一个Google支持的开源的OCR图文识别开源项目.支持多种语言(我使用的是3.02 版本,支持包括英文,简体中文,繁体中文),支持Windows,Linux,M ...
- 【SRM-07 D】天才麻将少女KPM
Description 天才麻将少女KPM立志要在日麻界闯出一番名堂.KPM上周叒打了n场麻将,但她这次又没控分,而且因为是全市参与的麻将大赛,所以她的名次范围是0..10^5.名次可能等于0是因为K ...
- java使用类数组 报错Exception in thread "main" java.lang.NullPointerException
源代码如下: Point[] points=new Point[n];//Point是一个类 for(int i=0;i<n;i++) { System.out.print("请输入x ...
- Mysql清空表(truncate)与删除表中数据(delete)的区别
来源:http://blog.is36.com/mysql_difference_of_truncate_and_delete/ 为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经 ...
- webpack学习笔记——--save-dev和--save
--save-dev 是你开发时候依赖的东西,--save 是你发布之后还依赖的东西. dependencies是运行时(发布后)依赖,devDependencies是开发时的依赖 比如,你写 ES6 ...
- 第25月第26天 dispatch_group_t dispatch_semaphore_t
1. dispatch_group_enter(group); dispatch_group_leave(group); dispatch_group_notify(group1, queue1,bl ...
- spring cloud心跳检测自我保护(EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.)
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER ...
- Kafka思维导图
- linux如何查看端口号被哪个进程占用
1.lsof -i:端口号 lsof(list open files) 2.netstat -tunlp |grep 端口号 t:tcp u:udp n:拒绝显示别名 l:仅显示listen的服务状态 ...
- 【tmos】SpringBoot项目IDEA不识别依赖,但是能够运行时什么鬼?
如下图,但是项目却能够正常运行 解决方法 方法1 方法2 方法3 删除项目的.idea文件,然后重新打开IDEA 方法4 删除项目的iml文件,然后reimport项目的pom.xml 文件,错误提示 ...