$Luogu$

$Sol$

区间整体加减? 差分+树状数组维护前缀和!

那每给一个人借完教室之后都要判断一下现在合不合法?那复杂度比暴力还不如些...

注意到这里的单调性,假设给前$x$个人借完教室之后就不合法了,那给前$x+1,x+2.....$个人借教室一定也是不合法的.于是可以二分第一个需要修改申请的人,然后$check()$.$check()$里在借完所有的人教室之后再判断合不合法就好了,而且就用不着树状数组了.

$upd:$还有一种方法,是线段树,比较简单粗暴易想,维护区间减和区间$min$值即可.

$over.$

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Rg int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return x*y;
}
const int N=1000010;
int n,m,r[N],d[N],s[N],t[N],a[N],as;
il bool ck(int x)
{
mem(a,0);
go(i,1,x)
{
a[s[i]]+=d[i];
a[t[i]+1]-=d[i];
}
Rg int nw=0;
go(i,1,n){nw+=a[i];if(nw>r[i])return 1;}
return 0;
}
int main()
{
n=read(),m=read();
go(i,1,n)r[i]=read();
go(i,1,m)d[i]=read(),s[i]=read(),t[i]=read();
Rg int l=1,r=m,mid;
while(l<=r)
{
mid=(l+r)>>1;//cout<<l<<" "<<r<<" "<<mid<<endl;
if(ck(mid))as=mid,r=mid-1;
else l=mid+1;
}
if(!as)printf("0\n");
else printf("-1\n%d\n",as);
return 0;
}

随机推荐

  1. jQuery学习笔记之解除重复点击事情重复绑定

    问题:有不同的按钮点击后都执行相同的事件,在jQuery重复点击就会产生事件重复绑定. 解决方法:使用unbind("click")方法,每次点击都先接触绑定已有事件再绑定新对象. ...

  2. Strange Way to Express Integers

    I. Strange Way to Express Integers 题目描述 原题来自:POJ 2891 给定 2n2n2n 个正整数 a1,a2,⋯,ana_1,a_2,\cdots ,a_na​ ...

  3. BERT可视化工具bertviz体验

    BERT可视化工具体验:bertviz是用于BERT模型注意力层的可视化页面. 1,bertviz的github地址:https://github.com/jessevig/bertviz 2,将be ...

  4. uva 11916 Emoogle Grid (BSGS)

    UVA 11916 BSGS的一道简单题,不过中间卡了一下没有及时取模,其他这里的100000007是素数,所以不用加上拓展就能做了. 代码如下: #include <cstdio> #i ...

  5. windows环境下安装nodeJS和express,一直提示command not found-配置环境变量

    1.安装NodeJS后,使用npm指令安装express框架,使用 npm install -g express npm install -g express-generator 安装了大半天的时间, ...

  6. ngRoute

    ngRoute 模块中包含以下内容, 名称 所属 作用 ngView DIRECTIVE 提供不同路由模板插入的视图层 $routeProvider PROVIDER 提供路由配置 $route SE ...

  7. js 数组的拼接

    数组的拼接 var a = [1,2,3,4,5,6]; var b=["foo","bar", "fun"]; 最终的结果是: [ 1,2 ...

  8. HDU 2844 混合背包、

    题意:一个人想买手表,给你n个价值的硬币,然后给你n个价值硬币对应的个数.但是呢,这个人只知道这个手表的价格不超过m元.问他最多能买多少种价值的手表 思路:dp背包专题 但是- - 一直不知道该怎么d ...

  9. Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法

    机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了. 不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了, ...

  10. H3C NAPT