题目链接:传送门

解题思路:从题目中我们很明显知道只有两种操作,第一种是查询\([A,B]\)范围内学生成绩的最大值,典型的RMQ,第二种操作是将A的成绩改为B,而不是改为B的成绩,请仔细体会。(当然样例都能看得出来),我们线段树只需要保存区间最大值,在updata和pushup两函数操作就行,最后注意多组输入,该题为线段树经典板子题。
Code:

#include<bits/stdc++.h>
using namespace std;const int INF = 0x3f3f3f3f;
const int N = 2000005;
int n,m;
int a[N],tree[N << 2];void push_up(int k) {tree[k] = max(tree[k<<1],tree[k<<1|1]);//把父节点的值更新为两子节点中的最大值
}
void build(int k, int l,int r) {if(l == r) {tree[k] = a[l];}else {int mid = l + ((r-l)>>1);build(k<<1,l,mid);build(k<<1|1,mid+1,r);push_up(k);}
}void updata(int p,int v,int l,int r,int k) {if(l == r) {a[p] += v, tree[k] += v;}else {int mid = l + ((r-l)>>1);if(p <= mid) {updata(p,v,l,mid,k<<1);}else {updata(p,v,mid+1,r,k<<1|1);}push_up(k);}
}int query(int L, int R,int l,int r,int k) {if(L <= l && R >= r) {return tree[k];}else {int ans = -INF;int mid = l+r >>1;if(L <= mid) {//如果查询区间在左边ans = max(ans,query(L,R,l,mid,k<<1));}if(R > mid) {//查询区间在右边ans = max(ans,query(L,R,mid+1,r,k<<1|1));}return ans;}
}
int main()
{while(~scanf("%d%d",&n,&m)) {for(int i = 1;i <= n; ++i) {scanf("%d",&a[i]);}build(1,1,n);char op;int l,r;while(m--) {cin>>op;if(op == 'Q') {scanf("%d%d",&l,&r);printf("%d\n",query(l,r,1,n,1));}else if(op == 'U'){scanf("%d%d",&l,&r);updata(l,r-a[l],1,n,1);}}}return 0;
}

HDU1754 I Hate It (线段树单点修改+区间查询)相关推荐

  1. HDU1754 —— I Hate It 线段树 单点修改及区间最大值

    题目链接:https://vjudge.net/problem/HDU-1754 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.  这让很多学生很反感. 不管你喜不 ...

  2. python:线段树区间修改 + 区间查询 模板 + 坑点总结

    from functools import reduceclass SegTree:'''支持增量更新,覆盖更新,序列更新,任意RMQ操作基于二叉树实现初始化:O(1)增量更新或覆盖更新的单次操作复杂 ...

  3. Ocean的礼物(线段树单点修改)

    题目链接:http://oj.ismdeep.com/contest/Problem?id=1284&pid=0 A: Ocean的礼物 Time Limit: 5 s      Memory ...

  4. codeforces round #576 div2 D Welfare State(线段树)[单点修改+区间修改]

    题意:有一些数字,以及一些操作.操作一是单点修改,输入1 b c,将位置b改成c,操作二是输入2 a,将不大于a的数全部改成a.求更改完毕后的数. tag的运用:tag是对被覆盖区间上加一个标记,那么 ...

  5. CDOJ 1073 线段树 单点更新+区间查询 水题

    H - 秋实大哥与线段树 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit S ...

  6. HDU 1698 Just a Hook (线段树区间修改+区间查询)

    题目链接: 传送门 题意:Pudge对装备钩子进行若干次的强化,强化分为三种分别对应的价值是1,2,3,在经历过若干次操作后,输出钩子对应的总价值,每次强化都是对钩子进行区间修改 解题思路:在明白了题 ...

  7. tzoj3315 买火车票(线段树+区间修改+区间查询)

    时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte 描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 ...

  8. 树链剖分+线段树 单点修改 区间求和 模板

    马上要去西安打邀请赛了,存下板子 首先是vector存图的: #include<bits/stdc++.h> using namespace std; #define ll long lo ...

  9. HDU 1166 敌兵布阵(线段树单点加区间查询)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

最新文章

  1. html表格td宽度设置,table以及td宽度设置细节
  2. margin和padding分别适合什么场景使用?
  3. 作者:姚前(1970-),男,中国人民银行征信中心副主任、高级工程师,主要研究方向为分布式系统和计算机安全。...
  4. springboot加载配置文件优先级
  5. Jmeter-【JSON Extractor】-响应结果中一级key取值
  6. 软件工程经济学结课报告——兰花智慧大棚监控系统可行性研究报告
  7. 《谭浩强C语言程序设计》 · 素数 7-3
  8. 中兴新支点操作系统挺好用的,国内电脑应预装国产操作系统
  9. 4K TEST SEQUENCES 测试视频片段下载
  10. K3CLOUD 常用数据表
  11. iPhone的AFC(Apple File Conduit)
  12. oracle analyze原理,Oracle analyze 介绍
  13. 阿里发布内部(面试官)题库:2022年Java社招岗(正式版)面试题
  14. 程序员接私活的6个网站,你有技术就有钱!
  15. int... num什么意思?
  16. java设计模式 之适配器模式
  17. python第三方库安装有哪些要求,python第三方库的四种安装方法
  18. SpringMVC--RequestMapping说明RestFul 风格小黄鸭调试法
  19. decode函数吗 jsp_SQL优化 ----- 使用 DECODE 函数来减少处理时间
  20. 2021-5-11 Leetcode 15.三数之和

热门文章

  1. Tensor的Broadcasting操作
  2. tensorflow基础:tf.data.Dataset.from_tensor_slices()
  3. 多层RNN的定义与理解
  4. 谈谈MySQL的WriteSet并行复制
  5. linux 配置多IP
  6. Java第四次作业,面向对象高级特性(继承和多态)
  7. [翻译]XNA在线俱乐部网站即将开站!
  8. pcre的compile,exec和free的代码
  9. centos7 ACL
  10. IBM为私有云用户提供开源数据库访问