题目描述 Description

在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。
面对海量租借教室的信息,我们自然希望编程解决这个问题。
我们需要处理接下来 n n n天的借教室信息,其中第 i i i天学校有 r i r_i ri​个教室可供租借。共有 m m m份订单,每份订单用三个正整数描述,分别为 d j , s j , t j d_j, s_j,t_j dj​,sj​,tj​,表示某租借者需要从第 s j s_j sj​天到第 t j t_j tj​天租借教室(包括第 s j s_j sj​天和第 t j t_j tj​天),每天需要租借 d j d_j dj​个教室。我们假定,租借者对教室的大小、地点没有要求。即对于每份订单,我们只需要每天提供 d j d_j dj​个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。
借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。这里的无法满足指从第 s j s_j sj​天到第 t j t_j tj​天中有至少一天剩余的教室数量不足 d j d_j dj​个。
现在我们需要知道,是否会有订单无法完全满足。如果有,需要通知哪一个申请人修改订单。

输入 Input

输入文件为 classroom.in。
第一行包含两个正整数 n , m n, m n,m,表示天数和订单的数量。
第二行包含 n n n个正整数,其中第 i i i个数为 r i r_i ri​,表示第 i i i天可用于租借的教室数量。
接下来有 m m m行,每行包含三个正整数 d j d_j dj​, s j , t j s_j,t_j sj​,tj​,表示租借的数量,租借开始、结束分别在第几天。
每行相邻的两个数之间均用一个空格隔开。天数与订单均用从 1 1 1开始的整数编号。

输出 Output

输出文件为 classroom.out。
如果所有订单均可满足,则输出只有一行,包含一个整数 0 0 0。否则(订单无法完全满足)输出两行,第一行输出一个负整数 − 1 -1 −1,第二行输出需要修改订单的申请人编号。

样例输入 Sample Input

4 3
2 5 4 3
2 1 3
3 2 4
4 2 4

样例输出 Sample Output

-1
2

提示 Hints

第 1 1 1份订单满足后, 4 4 4 天剩余的教室数分别为 0 , 3 , 2 , 3 0,3,2,3 0,3,2,3。第 2 2 2 份订单要求第 2 2 2 天到第 4 4 4 天每天提供 3 3 3个教室,而第 3 3 3 天剩余的教室数为 2 2 2,因此无法满足。分配停止,通知第$2 $个申请人修改订单。

范围&限制 Limits

对于 10 % 10\% 10%的数据,有 1 ≤ n , m ≤ 10 1 ≤ n, m ≤ 10 1≤n,m≤10;
对于 30 % 30\% 30%的数据,有 1 ≤ n , m ≤ 1000 1 ≤ n, m ≤ 1000 1≤n,m≤1000;
对于 70 % 70\% 70%的数据,有 1 ≤ n , m ≤ 1 0 5 1 ≤ n, m ≤ 10^5 1≤n,m≤105;
对于 100 % 100\% 100%的数据,有 1 ≤ n , m ≤ 1 0 6 , 0 ≤ r i , d j ≤ 1 0 9 , 1 ≤ s j ≤ t j ≤ n 1 ≤ n, m ≤ 10^6, 0 ≤ r_i, d_j≤ 10^9, 1 ≤ s_j ≤ t_j≤ n 1≤n,m≤106,0≤ri​,dj​≤109,1≤sj​≤tj​≤n。
Time Limit : 1 s 1s 1s & Memory Limit : 128 M B 128MB 128MB

看数据范围,应该是一个 l o g log log的算法( O ( n ) O(n) O(n)再见)发现是每一次都维护一个范围的数,果断线段树…
维护一个区间的所有值的线段树需要加lazy优化,要不然绝对T掉。
所以总结一句:本题为裸线段树+lazy优化
有人写了二分(二分天数),不懂…
UPD:Vijos上数据加强,可以试一试ZKW线段树。
Code

[NOIP] [线段树] NOIP2012Day2 借教室(classroom)相关推荐

  1. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

  2. FJUT 借教室 (线段树区间查询+区间修改)

    解题思路:看到题目,经典的区间查询+区间修改,我们用线段树维护一段区间的最小值,每当有新的订单,我们就先查询订单时间范围内的最小教室数量,然后与Dj作比较,如果比dj小,那么我们可以标记为false, ...

  3. P1083 [NOIP 2012]借教室

    https://www.luogu.org/problem/show?pid=1083#sub 一开始容易想到的方法是线段树,每次修改时,如果出现负数,那么当前这个人一定不能满足了. 但是在noip里 ...

  4. [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)

    [2021-07-19 内测] NOIP 操作 description solution code 异或 description solution code 等级 description soluti ...

  5. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】

    题意: n×mn\times mn×m 的网格图,每个点有两个权值 vali,j,bufi,jval_{i,j},buf_{i,j}vali,j​,bufi,j​,从 (1,1)(1,1)(1,1) ...

  6. [帝皇杯day 1] [NOIP2018模拟赛]小P的loI(暴力+素筛),【NOIP模拟赛】创世纪(贪心),无聊的数对(线段树)

    文章目录 T1:小P的lol title solution code T2:创世纪 title solution code T3:无聊的数对 title solution code T1:小P的lol ...

  7. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码 转载于: ...

  8. jzoj 5850.【NOIP提高组模拟2018.8.25】e 可持久化线段树+lca

    Description Input Output Data Constraint 分析: 最小连通块可以看作是所有点到他们的 lca l c a lca路径的并集,因为是取最小值,所以重复的不会有贡献 ...

  9. NOIP模拟题 [线段树][矩阵快速幂]

    有一定难度,要深入挖掘问题特性. T1: 题意: 给定一个序列,每次操作把操作位置及其后面比它小的数按顺序排列(整体上仍在原来的位置),求每次操作后的逆序对数. 分析: 每个数对逆序对数都有一个贡献( ...

最新文章

  1. 决策树剪枝的方法与必要性
  2. 给PHPSTORM添加XDEBUG调试功能
  3. 从AppStore提取ipa
  4. Win32_16来看看标准菜单和右键菜单的玩法
  5. .NET中栈和堆的比较(二)
  6. #前端# 解决前端页面滑动不顺畅的问题
  7. Oracle冷备迁移过程和在线日志损坏处理
  8. 结构体第一个成员是结构体,则为父结构体首地址demo(六)
  9. Python入门到精通(一):入门必备知识
  10. 普林斯顿微积分读本:第 3 章 极限导论
  11. 万字长文解析Redis数据倾斜与JD开源hotkey源码分析
  12. 迅捷PDF转Word转换器
  13. ccd坏点测试软件,如何测试CCD坏点(ZT)
  14. java编写家庭收支记账程序
  15. python画小猪佩奇——给最爱的人一份甜甜的温暖
  16. RFID固定资产管理降低人工成本,实现智能化的管理-新导智能
  17. 处理办公文档通过共享打印机无法打印
  18. 华中科技大学计算机上机,华中科技大学_2010___考研计算机_复试上机
  19. 设计模式之七大原则——里氏替换原则(LSP)(三)
  20. stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

热门文章

  1. 论文里如何统一快速修改所有的引用序号为上标
  2. 中国红客联盟宣布解散 网站同步关闭
  3. 乐动圈圈显示无法连接服务器,win8系统安装乐动圈圈失败导致仙剑6无法安装如何解决...
  4. python中出栈的方法,python中栈的原理及实现方法示例
  5. 哪些借款合同会被认定无效
  6. 流量红利消失,如何搭建APP用户增长分发策略
  7. 图像金字塔(高斯与拉普拉斯)
  8. java/php/net/python化妆品营销管理与决策支持系统设计
  9. asp.net web开发——文件的上传和下载
  10. 01-css经典布局整理-圣杯布局