[vijos1782]借教室<线段树>
题目链接:https://vijos.org/p/1782
题意:一个区间1,n。m次操作,每次操作让l,r区间值减去d,当有任何一个值小于0就输出当前是第几个操作 这道题其实是没有什么难度的,是线段树中比较常规的题,我写它主要是为了更好的理解lazy标记,之前老师讲线段树我没听懂,所以都只有自己慢慢搞♂了,lazy标记就是与操作挂钩的一个值,根据题的意思不同lazy标记存的东西也会不同,针对这道题来说,lazy标记就是处理当前区间要减去多少天,如果lazy标记不为0说明目前这个区间的值还没有处理,是不正确的值,当lazy=0才表明当前区间的答案是正确的。
这道题我还是wa了很多次的,最后我把范围开大了才过了,当然我这个地方就有点不懂了,题目说的是10^6次方,所以线段树区间我就是(10^6+5)*4但是还是WA了两组,后来把这个区间开大了才AC,不知道原因是啥,如果有大佬知道还望指点一下
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<queue>
#define lson pos<<1
#define rson pos<<1|1
#define maxn 10000005//????
using namespace std; int n,m,minn[maxn<<],lazy[maxn<<],a[maxn]; void pushup(int pos)
{
minn[pos]=min(minn[lson],minn[rson]);
} void build(int l,int r,int pos)
{
if(l==r){
minn[pos]=a[l];return;
}
if(l>r)return;
int mid=(l+r)>>;
build(l,mid,lson);
build(mid+,r,rson);
pushup(pos);
} void pushdown(int pos)
{
minn[pos]-=lazy[pos];
lazy[lson]+=lazy[pos];
lazy[rson]+=lazy[pos];
lazy[pos]=;
} void modify(int l,int r,int pos,int al,int ar,int x)
{
if(lazy[pos])pushdown(pos);//如果pos区间还没有处理
if(al<=l&&r<=ar){
lazy[pos]=x;
pushdown(pos);
return;
}
if(al>r||ar<l)return;
int mid=(l+r)>>;
modify(l,mid,lson,al,ar,x);
modify(mid+,r,rson,al,ar,x);
pushup(pos);
} int main()
{
freopen("fuck.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
build(,n,);
int d,x,y;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&d,&x,&y);
modify(,n,,x,y,d);
if(minn[]<){
printf("-1\n%d",i);
return ;
}
}
printf("");
}
[vijos1782]借教室<线段树>的更多相关文章
- vijos1782借教室
描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望 ...
- vijos1782:借教室
描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望 ...
- NOIP2012借教室[线段树|离线 差分 二分答案]
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...
- [NOIP2012] 提高组 洛谷P1083 借教室
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- 借教室(codevs 1217)
1217 借教室 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- NOIp 2012 #2 借教室 Label:区间修改线段树
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- NOIP 2012 Day2T2 借教室题解
NOIP 2012 Day2T2 借教室题解 题目传送门:http://codevs.cn/problem/1217/ 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动 ...
- 【NOIP2012】借教室
因为本校OJ+1s所以用线段树水过了,不去syz的水库水这题还真不知道线段树过不了= = 原题: 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的 ...
- NOIP 2012 T5 借教室 [洛谷P1083]
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...
随机推荐
- 前端每日实战:111# 视频演示如何用纯 CSS 创作一只艺术的鸭子
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/aaoveW 可交互视频 此视频是可 ...
- 使用D3.js构建实时图形
首先你需要在计算机上安装Node和npm. 数据的可视化表示是传递复杂信息的最有效手段之一,D3.js提供了创建这些数据可视化的强大工具和灵活性. D3.js是一个JavaScript库,用于使用SV ...
- 研究开源源码之Myrmec
好久没写博客了,自己也弄不清是懒了还是忙了.毕竟白天需要工作,晚上有时候看看资料,有时候陪家人,有时候约朋友......更加累了,可能由于累了就懒得总结了. 今天有同事问我关于代码检查文件类型的问题. ...
- url参数格式化
getQueryBbj = (url)=>{ let urlData = url.split("?")[1]; let queryArr = urlData.split('& ...
- 10个机器学习人工智能开发框架和AI库(优缺点对比表)/贪心学院
概述 通过本文我们来一起看一些用于人工智能的高质量AI库,它们的优点和缺点,以及它们的一些特点. 人工智能(AI)已经存在很长时间了.然而,由于这一领域的巨大进步,近年来它已成为一个流行语.人工智能曾 ...
- Protocol buffers编写风格指南
原文链接:https://developers.google.com/protocol-buffers/docs/style Style Guide 本文说明了.proto文件的编写风格指南.遵循这些 ...
- Python数据科学手册(2) NumPy入门
NumPy(Numerical Python 的简称)提供了高效存储和操作密集数据缓存的接口.在某些方面,NumPy 数组与 Python 内置的列表类型非常相似.但是随着数组在维度上变大,NumPy ...
- 仿flash实现图片轮换播放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- git重新学习
一个学习网址:https://learngitbranching.js.org/ 一.对于一个新的远程空仓库 本地新建文件后推送 #初始化 git init #添加文件 git add README. ...
- What is the difference between shades and shadows?
Shade is the darkness of an object not in direct light, while shadows are the silhouette of an objec ...