题目大意:

有一些教室

我们需要处理接下来n天的借教室信息 其中第i天学校有ri个教室可供租借

共有m份订单 每份订单用三个正整数描述 分别为dj sj tj 表示从第sj天到第tj天租借教室 每天需要租借dj个教室

对于每份订单,我们只需要每天提供dj个教室  而它们具体是哪些教室 每天是否是相同的教室则不用考虑

借教室的原则是先到先得 也就是说我们要按照订单的先后顺序依次为每份订单分配教室

如果在分配的过程中遇到一份订单无法完全满足 则需要停止教室的分配 通知当前申请人修改订单

这里的无法满足指从第sj天到第tj天中有至少一天剩余的教室数量不足dj个

现在需要知道 是否会有订单无法完全满足 如果有 需要通知哪一个申请人修改订单

思路:

因为直接做不好做

可以二分答案

判断到mid是否是符合题意的 如果不满足就向左

然后check的时候差分来判断每天超没超

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<map>
#include<vector>
#define ll long long
#define inf 2147483611
#define MAXN 1000100
#define MOD 1000000
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,a[MAXN],d[MAXN],s[MAXN],t[MAXN],g[MAXN];
bool check(int x)
{
memset(g,,sizeof(g));
for(int i=;i<=x;i++)
g[s[i]]+=d[i],g[t[i]+]-=d[i];
for(int i=;i<=n;i++)
{
g[i]+=g[i-];
if(g[i]>a[i]) return ;
}
return ;
}
int main()
{
n=read(),m=read();
for(int i=;i<=n;i++) a[i]=read();
for(int i=;i<=m;i++) d[i]=read(),s[i]=read(),t[i]=read();
int l=,r=n,mid;
if(check(r)) {puts("");return ;}
while(l<r-)
{
mid=(l+r)>>;
if(check(mid)) l=mid;
else r=mid;
}
if(l==&&!check(l)) l=;
printf("-1\n%d",l+);
}

luogu 1083 借教室的更多相关文章

  1. Luogu 1083 借教室(二分,差分)

    Luogu 1083 借教室(二分,差分) Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不 ...

  2. LuoGu P1083 借教室

    题目传送门 借教室这个题有两种做法,差分+前缀和或者是线段树 线段树维护区间最小值,因为能不能借教室使用是由这几天中可用教室最少的一天决定的 其实这题是个很裸的线段树维护区间最小值,但有一点需要注意, ...

  3. Luogu P1083 借教室【二分答案/差分】By cellur925

    题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海 ...

  4. luogu P1083 借教室 x

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  5. luogu P1038借教室【Noip提高组2012】

    这道题我读完题目的第一感觉是: 这不就是个线段树??用线段树维护区间最小值,检查是否满足订单要求即可判断. 对于修改操作直接在区间上进行. 据说会卡一卡线段树,但是貌似写一个懒标记,连zkw线段树都不 ...

  6. [NOIp2012] luogu P1083 借教室

    该*的英语,这么长还要背. 题目描述 你有 nnn 个数 ai{a_i}ai​,mmm 次操作,每次操作将 [l,r][l,r][l,r] 区间的每个数减去 ccc.要求任何时刻 ∀x∈[1,n]\f ...

  7. 【NOIP2012】【CJOJ1093】【洛谷1083】借教室

    我写的是不完美算法!!! 题面 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的 ...

  8. VIjos——V 1782 借教室 | | 洛谷——P1083 借教室

    https://vijos.org/p/1782|| https://www.luogu.org/problem/show?pid=1083 描述 在大学期间,经常需要租借教室.大到院系举办活动,小到 ...

  9. 『题解』洛谷P1083 借教室

    更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Portal3: Vijos Description 在大学期间,经常需要租借教室.大到院系举办活动,小到 ...

随机推荐

  1. JavaScript实现AES算法加密和解密

    JavaScript的加密和解密用的是google的CryptoJS库.本文以AES/ECB/NoPadding为例展示AES加密和解密的方法. 需要下载CryptoJS库,下载地址如下:https: ...

  2. 零基础入门学习Python(9)--了不起的分支和循环3

    前言 本节继续介绍分支和循环 知识点 while循环 Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码.不同的是只要条件为True,while循环就会一直重 ...

  3. 简述FTP主动模式与被动模式

    1 FTP工作模式 2 不同模式FTP面临的问题 3 主动模式的FTP连接建立连接主要步骤 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号 ...

  4. 修改 root密码

    sudo su #切换到root账户sudo passwd root  #输入密码

  5. 怎样判断有没有SQL注入?

    最为经典的单引号判断法: 在参数后面加上单引号,比如: http://xxx/abc.php?id=1' 如果页面返回错误,则存在 Sql 注入. 原因是无论字符型还是整型都会因为单引号个数不匹配而报 ...

  6. FIRST集合、FOLLOW集合、SELECT集合以及预测分析表地构造

    FIRST集合.FOLLOW集合.SELECT集合以及预测分析表地构造 FIRST集合的简单理解就是推导出的字符串的开头终结符的集合. FOLLOW集合简单的理解就对于非终结符后面接的第一个终结符. ...

  7. IOS7状态栏StatusBar官方标准适配方法

    IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...

  8. Codeforces 799E(贪心)

    题意: 有n个物品,购买物品i需要花费ci的代价.Arkady和Masha分别有喜欢的物品. 现在需要从中选m个,使得这m个物品中至少有k个Arkady喜欢的物品,k个Masha喜欢的物品. 输出满足 ...

  9. Ubuntu 16.04出现:qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

    没有安装qt4-qmake,安装即可: sudo apt-get install qt4-qmake 参考: https://stackoverflow.com/questions/23703864/ ...

  10. 怎样删除Tomcat下已经部署的项目

    lz说的是把web项目部署到tomcat之中,要把它删除..很简单,找到webapps文件(tomcat的根目录)下把它删除即可.. 2.Tomcat 6.0\webapps\项目名 只要在把这个目录 ...