思路:与我发表的上一遍求和的思想一样   仅仅是如今变成求最大值而已

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
inline int Max(int a, int b)
{
return a > b ? a : b;
}
const int MAXN = 200001; // 区间范围
struct
{
int l, r, m; // l 左端点,r 右端点。m 为该区间的最大分数
} tree[MAXN*4];
int a[MAXN];
void creat(int t, int l, int r)
{
tree[t].l = l, tree[t].r = r;
if(l == r) // 叶子节点
{
tree[t].m = a[l];
return; //递归出口
}
int m = (l+r) / 2;
creat(t*2, l, m), creat(t*2+1, m+1, r); // 左孩子
tree[t].m = Max(tree[t*2].m, tree[t*2+1].m); // 右孩子
}
void update(int t, int n, int v) // 把n 点的值更新为v
{
if(tree[t].l == tree[t].r && tree[t].l == n)
{
tree[t].m = v;
return;
}
if(n <= tree[t*2].r) update(t*2, n, v);
else update(t*2+1, n, v);
tree[t].m = Max(tree[t*2].m, tree[t*2+1].m);
}
int query(int t, int l, int r) // 查询t 节点在【l,r】区间范围的最大值
{
if(l == tree[t].l && r == tree[t].r) return tree[t].m;
int s;
if(r <= tree[t*2].r) s = query(t*2, l, r);
else if(l >= tree[t*2+1].l) s= query(t*2+1, l, r);
else s = Max(query(t*2, l, tree[t*2].r), query(t*2+1, tree[t*2+1].l, r));
return s;
}
int main()
{
int n, m, i, x1, x2;
char s[2];
while(scanf("%d%d", &n, &m) != EOF)
{
for(i = 1; i <= n; i++) scanf("%d", &a[i]);
creat(1, 1, n); // 根节点标号为1,区间为【1,n】
while(m--)
{
scanf("%s%d%d", s, &x1, &x2);
if(s[0] == 'Q') printf("%d\n", query(1, x1, x2)); // 查询
else update(1, x1, x2); // 更新
}
}
return 0;
}

最新文章

  1. NSLog(@&quot;%@&quot;,类对象); 默认输出类名
  2. guid正则表达
  3. 系统巡警 v1.2 系统行为分析神器
  4. Unity3D编程学习分享
  5. JavaScript数字精度上代码。
  6. orczhou----MYSQL
  7. eclipse 常见问题及解决
  8. cassandra 鉴权
  9. Python:Mac 下 MQTT 服务器 Mosquitto 的配置
  10. Django 系列博客(十二)
  11. 【C++】根据二叉树的前序遍历和中序遍历重建二叉树并输出后续遍历
  12. 关于get和post请求的区别
  13. Java语言中的面向对象特性
  14. How to RAMDISK on macOS
  15. Docker 搭建私有仓库
  16. POJ1236 Network of Schools【强连通】
  17. jQuery操作字符串
  18. java并发集合知识点(二)
  19. mysql,oracle,sql server中的默认事务隔离级别查看,更改
  20. wb标准

热门文章

  1. Python-操作符和表达式
  2. 7.union
  3. 2018.10.9 上线发现elasticsearch写入速度超级慢,原来罪魁祸首是阿里云服务的OSS的锅
  4. Android 复制文本内容到系统剪贴板(自由复制)
  5. poj1328 Radar Installation 区间贪心
  6. 闰年or平年判断
  7. mount 命令总结
  8. drf02 序列化器详解 Serializer
  9. 两个控件同一行显示bootstrap
  10. PAT_A1137#Final Grading