博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1754 I Hate It 线段树 单点更新 区间最值
阅读量:7117 次
发布时间:2019-06-28

本文共 1302 字,大约阅读时间需要 4 分钟。

线段树功能:update:单点更新 query:区间最值

#include 
#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1using namespace std;const int MAXN = 200008;int maxs[MAXN<<2];void build(int l, int r, int rt){ if(l == r) { scanf("%d", &maxs[rt]); return; } int m = (l + r) >> 1; build(lson); build(rson); maxs[rt] = max(maxs[rt<<1], maxs[rt<<1|1]);}int query(int L, int R, int l, int r, int rt){ if(L <= l && r <= R) return maxs[rt]; int ret = 0; int m = (l + r) >> 1; if(L <= m) ret = max(ret, query(L, R, lson)); if(R > m) ret = max(ret, query(L, R, rson)); return ret;}void updata(int p, int news, int l, int r, int rt){ if(l == r) { maxs[rt] = news; return; } int m = (l + r) >> 1; if(p <= m) updata(p, news, lson); else updata(p, news, rson); maxs[rt] = max(maxs[rt<<1], maxs[rt<<1|1]);}int main(){// freopen("in.txt", "r", stdin); int n,k; while(~scanf("%d%d", &n, &k)) { build(1, n, 1); while(k--) { char s[5]; scanf("%s", s); int a,b; scanf("%d%d", &a, &b); if(s[0] == 'Q') printf("%d\n", query(a, b, 1, n, 1)); else updata(a, b, 1, n, 1); } } return 0;}

 

转载于:https://www.cnblogs.com/pach/p/7347080.html

你可能感兴趣的文章
Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】
查看>>
酷狗音乐快速转换MP3格式的方法
查看>>
原生JS 实现复杂对象深拷贝(对象值包含函数)
查看>>
优化体系结构 - 算法外置优化计算结构
查看>>
jqGrid的rowNum属性默认值、-1情况的介绍
查看>>
你应该知道的数据库数据类型及其设计原则
查看>>
解决vue报错Failed to mount component
查看>>
[LeetCode] 124. Binary Tree Maximum Path Sum
查看>>
活学活用! 用Local Storage实现多人聊天室
查看>>
一次爬虫实践记录
查看>>
炫酷粒子表白,双十一脱单靠它了!
查看>>
mysql锁以及实践总结
查看>>
【工具】MongoDB 与可视化工具 adminMongo 的安装、启动与连接
查看>>
Javascript--常用方法
查看>>
Swoft之服务注册发现Consul服务器配置
查看>>
[译]迁移到新的 React Context Api
查看>>
IM 推送保障及网络优化详解(二):如何做长连接加推送组合方案
查看>>
webpack4 踩坑记
查看>>
线程池你真不来了解一下吗?
查看>>
【跃迁之路】【424天】程序员高效学习方法论探索系列(实验阶段181-2018.04.05)...
查看>>