【线段树(sum,add)】P1083 借教室
时间:2019-10-23
本文章向大家介绍【线段树(sum,add)】P1083 借教室,主要包括【线段树(sum,add)】P1083 借教室使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 #include<iostream> 2 #include<string> 3 #include<queue> 4 #include<stack> 5 #include<vector> 6 #include<map> 7 #include<cstdio> 8 #include<cstdlib> 9 #include<algorithm> 10 #include<set> 11 #include<list> 12 #include<iomanip> 13 #include<cstring> 14 #include<cmath> 15 #include<limits> 16 using namespace std; 17 18 #define au auto 19 #define debug(i) cout<<"<debug> "<<i<<"<\debug>"<<endl 20 #define mfor(i,a,b) for(register int i=(a);i<=(b);i++) 21 #define mrep(i,a,b) for(register int i=(a);i>=(b);i--) 22 #define LLL __int128 23 #define Re register 24 #define il inline 25 #define mem(a,b) memset(a,(b),sizeof(a)) 26 typedef pair<int, int> intpair; 27 typedef long long int LL; 28 const int INF = 0x3f3f3f3f; 29 const long long int INFLL = 0x3f3f3f3f3f3f3f3f; 30 31 const int maxn = 5000010; 32 int a[maxn]; 33 int n, m; 34 35 #define lc(x) x<<1 36 #define rc(x) x<<1|1 37 38 il int min(int a, int b) 39 { 40 return a > b ? b : a; 41 } 42 43 struct tree 44 { 45 int a; 46 int l, r; 47 int tag; 48 tree() 49 { 50 tag = 0; 51 l = 0; 52 r = 0; 53 a = 0; 54 } 55 }node[maxn]; 56 57 void build(int x, int l, int r) 58 { 59 node[x].l = l; 60 node[x].r = r; 61 if (l == r) 62 { 63 node[x].a = a[l]; 64 return; 65 } 66 int mid = (l + r) >> 1; 67 build(lc(x), l, mid); 68 build(rc(x), mid + 1, r); 69 node[x].a = min(node[lc(x)].a, node[rc(x)].a); 70 } 71 72 inline void push_down(int x) 73 { 74 node[lc(x)].tag += node[x].tag; 75 node[lc(x)].a += node[x].tag; 76 node[rc(x)].a += node[x].tag; 77 node[rc(x)].tag += node[x].tag; 78 node[x].tag = 0; 79 } 80 81 inline void update(int left, int right, int x, int k) 82 { 83 if (left <= node[x].l && node[x].r <= right) 84 { 85 node[x].a += k; 86 node[x].tag += k; 87 return; 88 } 89 push_down(x); 90 int mid = (node[x].l + node[x].r) >> 1; 91 if (left <= mid) update(left, right, lc(x), k); 92 if (right > mid) update(left, right, rc(x), k); 93 node[x].a = min(node[lc(x)].a, node[rc(x)].a); 94 } 95 96 int query(int left, int right, int x) 97 { 98 int res = INF; 99 if (left <= node[x].l && node[x].r <= right) return node[x].a; 100 int mid = (node[x].l + node[x].r) >> 1; 101 if (left <= mid) res = min(res, query(left, right, lc(x))); 102 if (right > mid) res = min(res, query(left, right, rc(x))); 103 return res; 104 } 105 106 int main() 107 { 108 ios::sync_with_stdio(0); 109 cin.tie(0); 110 cin >> n >> m; 111 mfor(i, 1, n) 112 { 113 cin >> a[i]; 114 } 115 build(1, 1, n); 116 mfor(i, 1, m) 117 { 118 int a, b, c; 119 cin >> a >> b >> c; 120 update(b, c, 1, -a); 121 if (query(1, n, 1) < 0) 122 { 123 cout << -1 << endl; 124 cout << i; 125 return 0; 126 } 127 } 128 cout << 0; 129 }
原文地址:https://www.cnblogs.com/thjkhdf12/p/11725300.html
- 简单、通用的JQuery Tab实现
- Dubbo源码解析 - 远程暴露
- 使用FastText(Facebook的NLP库)进行文本分类和word representatio...
- 声音分类的迁移学习
- 【死磕Java并发】—– J.U.C之AQS:CLH同步队列
- 使用Python完成你的第一个学习项目
- CA,给了数据库,给了机器,为啥也扩不了容?
- 如何使用Anaconda设置机器学习和深度学习的Python环境
- MQ,互联网架构解耦神器
- 预测随机机器学习算法实验的重复次数
- 服务化了,没想到耦合更加严重?
- 如何在Python中扩展LSTM网络的数据
- 使用Keras的Python深度学习模型的学习率方案
- 全球电脑手机无一幸免,英特尔CPU“漏洞事件”到底多严重?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用java写一个死锁
- Runnable和Thread比较
- 使用@ConditionalOnProperty注解
- Java注解Annotation与自定义注解详解
- spring boot 配置多个DispatcherServlet
- 基于Pytorch实现的MASR中文语音识别
- Quartz.NET 配置文件详解
- 如何用redis正确实现分布式锁?
- SQL Server 事务隔离级别
- Django+Vue开发生鲜电商平台之8.商品详情页功能实现
- Django+Vue开发生鲜电商平台之7.用户登录和注册功能
- centos7下nginx使用tmp目录问题
- TeaWeb – 可视化的Web代理服务
- Slf4j适配日志原理
- vim编辑器