题面

二分到哪一个申请人要修改订单,可以差分\(+\)前缀和达到\(\Theta(n)\)的\(\text{check}\)。

具体细节见代码。

#include <bits/stdc++.h>
#define itn int
#define gI gi
#define int long long using namespace std; typedef long long ll; inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
} inline ll gl()
{
ll f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
} const int maxn = 1000003; int n, m, r[maxn], d[maxn], s[maxn], t[maxn], cf[maxn], sum[maxn], ans = 2000000003; inline bool check(int mid)
{
memset(cf, 0, sizeof(cf));//差分数组
memset(sum, 0, sizeof(sum));//前缀和数组
for (int i = 1; i <= mid; i+=1)
{
cf[s[i]] += d[i], cf[t[i] + 1] -= d[i];//进行差分
}
for (int i = 1; i <= n; i+=1) sum[i] = sum[i - 1] + cf[i];//前缀和计算
for (int i = 1; i <= n; i+=1) if (sum[i] > r[i]) return true;//当前check的申请人要修改就返回true
return false;//不要修改
} signed main()
{
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
n = gi(), m = gi();
for (int i = 1; i <= n; i+=1) r[i] = gi();
for (int i = 1; i <= m; i+=1)
d[i] = gi(), s[i] = gi(), t[i] = gi();
int l = 1, r = m;
while (l <= r)
{
int mid = (l + r) >> 1;
if (check(mid)) ans = mid, r = mid - 1;
else l = mid + 1;
}
if (ans == 2000000003) puts("0");
else printf("-1\n%lld\n", ans);
return 0;
}

题解【洛谷P1083】[NOIP2012]借教室的更多相关文章

  1. 洛谷 1083 (NOIp2012) 借教室——标记永久化线段树 / 差分+二分

    题目:https://www.luogu.org/problemnew/show/P1083 听说线段树不标记永久化会T一个点. 注意mn记录的是本层以下.带上标记的min! #include< ...

  2. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

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

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

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

  4. NOIP2012 借教室 题解 洛谷P1083

    一看就是暴力 好吧,其实是线段树或差分+二分,这里用的是差分+二分的做法. 二分部分的代码,套个二分板子就行 ,right=m; while(left<right)//二分 { ; ; else ...

  5. 【分块】【常数优化】【Orz faebdc】洛谷 P1083 NOIP2012提高组 借教室

    分块90分. By AutSky_JadeK [重点在下面] #include<cstdio> #include<cmath> using namespace std; #de ...

  6. NC16564 [NOIP2012]借教室

    NC16564 [NOIP2012]借教室 题目 题目描述 ​ 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借 ...

  7. NOIP2012借教室[线段树|离线 差分 二分答案]

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

  8. 洛谷P1083 借教室 题解

    题目 [NOIP2012 提高组] 借教室 题解 这道题是几周之前做到的一道题,本来不想讲的,因为这道题也是用到了二分答案的方法,这类题目之前已经发布过两篇题解了.但这道题还运用了差分数组这个思想,所 ...

  9. 洛谷 题解 P1083 【借教室】

    0x00 先看数据范围 $ 1≤n,m≤10^6 $,第一反应 \(O(nlogn)\) 0x01 5 pts 直接输出 '0' 即可. 不要问我怎么知道输出 '0' 可以拿 5 pts. 保持微笑. ...

  10. 【题解】洛谷 P1083 借教室

    目录 题目 思路 \(Code\) 题目 P1083 借教室 思路 线段树.需要的操作为区间修改,区间查询.维护每个区间的最小值就好. \(Code\) #include<iostream> ...

随机推荐

  1. springboot之swagger快速启动(新的ui)

    springboot之swagger快速启动(新的ui) 功能点: 集成swagger前端接口文档 Swagger 整合 zuul 智能列表 无缝集成 knife4j 前端文档 支持 v0.1.2RE ...

  2. .net List回收

    转 static void Main(string[] args) { List<int> list = new List<int>(); for (int i = 0; i ...

  3. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片

    场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  4. You (oracle) are not allowed to use this program (crontab)

      检查一台ORACLE数据库服务器的crontab作业(用户为oracle,实际环境中可能为oracle.也有可能是其它用户)时,发现出现下面提示信息: $ crontab -l You (orac ...

  5. C#中StreamReader类读取文件使用示例

    C#中StreamReader类读取文件使用示例 1.需要导入的命名空间是:System.IO; 2.操作的是字符,所以打开的是文本文件. 常用属性:   CurrentEncoding:对象正在使用 ...

  6. RedisDeskTopManager连接时提示:can't nonnect to redis-server

    场景 在使用RedisDeskTopManager客户端可视化工具连接Redis服务端时提示: 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众 ...

  7. 小白的linux笔记8:linux自动运行爬虫并发送提醒邮件

    有了成功运行的爬虫后,希望能每天定时运行,且遇到错误时能及时发出提醒. 发出提醒 可以用mailx发出邮件做提醒.没有的话先安装Yum install mailx. 以qq邮箱为例,需要设置/etc/ ...

  8. P2214 [USACO14MAR]哞哞哞Mooo Moo

    链接:Miku ---------------------- 这道题还是个背包 --------------------- 首先看一下声音的组成,对于每一个农场的声音,它是由两部分组成的 :上一个农场 ...

  9. IDEA创建mybatisDemo,并实现简单的CRUD

    Mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.在Java或者Java Web项目中,添加Mybatis必须的核心包,就能对数据表进行增删改查操作了.下面以MySQL数据库o ...

  10. [菜b]Isaunoya 的一些学习笔记…[保持咕咕咕]

    fread/fwrite标记永久化 分块 树链剖分 莫比乌斯反演 斜率优化/单调队列 kruskal重构树 回滚莫队 可持久化线段树/trie树 Link-Cut-Tree dsu on tree F ...