题目:HDU1754

#include <stdio.h>
#define maxn 222222
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int MAX[maxn<<2];
int max(int a,int b)
{
return a>b? a:b;
}
void PushUP(int rt)
{
MAX[rt]=max(MAX[rt<<1],MAX[rt<<1|1]);
}
void Build(int l,int r,int rt)
{
if(l==r)
{
scanf("%d",&MAX[rt]);
return;
}
int m=(l+r)>>1;
Build(lson);
Build(rson);
PushUP(rt);
}
void Update(int p,int add,int l,int r,int rt)
{
if(l==r)
{
MAX[rt]=add;
return;
}
int m=(l+r)>>1;
if(p<=m)
Update(p,add,lson);
else
Update(p,add,rson);
PushUP(rt);
}
int Query(int L,int R,int l,int r,int rt)
{
if(L<=l&&R>=r)
return MAX[rt];
int m=(l+r)>>1;
int ret=0;
if(L<=m)   ret=max(ret,Query(L,R,lson));
if(R>m)    ret=max(ret,Query(L,R,rson));
return ret;
}
int main()
{
int N,M;
char s[5];
while(~scanf("%d%d",&N,&M))
{
Build(1,N,1);
while(M--)
{
int a,b;
scanf("%s%d%d",s,&a,&b);
if(s[0]=='Q')
printf("%d\n",Query(a,b,1,N,1));
else
Update(a,b,1,N,1);
}
}
return 0;
}

线段树求区间最大值RMQ(单点更新)相关推荐

  1. hdu3074 线段树求区间乘积(单点更新)

    题意:       给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余. 思路:       线段树单点更新,简单题目,不多解释,具体看代码. #i ...

  2. 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring

    题意: 给你n个数的序列,当满足i<ji<ji<j andandand ai>aja_i>a_jai​>aj​时,这两个点之间有一条边,现在对点染色,要求每个点相邻 ...

  3. 线段树求区间和(单点更新)

    题目1:敌兵布阵  线段树的主要操作:(1)建立线段树(Build)          (2)更新区间值 (Update)           (3)查询区间(Query) 写法一: #include ...

  4. NYOJ-备用2344 盖伦的告白(线段树,区间最大值)

    题目: 2344: 盖伦的告白 时间限制: 1 秒   内存限制: 128 MB 提交: 57   解决: 20 提交  状态 题目描述 盖伦和赵信这对基友又在打赌,谁输了就去向卡特琳娜告白.. 这一 ...

  5. P4588 [TJOI2018]数学计算(线段树维护区间乘和单点修改)

    P4588 [TJOI2018]数学计算 刚看到这题根本每想到用线段树,直接每次记录计算结果然后找到要除的数字就好了呗 但是!你会注意到,如果连续乘很多很多次,然后再除的话,如果不取模会爆 long ...

  6. 树状数组求区间和 和 单点更新

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  7. HDU 3308 线段树求区间最长连续上升子序列长度

    题意:两种操作,Q L R查询L - R 的最长连续上升子序列长度,U pos val 单点修改值 #include <bits/stdc++.h> #define N 100005 us ...

  8. Marvolo Gaunt's Ring CodeForces - 855B+线段树+维护区间最大值和最小值

    题目链接: Marvolo Gaunt's Ring CodeForces - 855B 题目大意: 给定一段序列:a1,a2,a3,--an, 给定三个数:p,q,r(注意数据范围,代码里ans=- ...

  9. Distinct Characters Queries CodeForces - 1234D(线段树求区间字母种类数)

    You are given a string ss consisting of lowercase Latin letters and qq queries for this string. Reca ...

最新文章

  1. LeetCode实战:存在重复元素
  2. Ubuntu12.04安装jdk1.6.0
  3. Refresh your Java skills–面对Java学习过程中的一些迷茫
  4. 「2017 山东一轮集训 Day2」Pair (霍尔定理+线段树)
  5. fibonacci数列的性质(ZOJ3707)
  6. 【渝粤题库】广东开放大学 标准化专题讲座 形成性考核
  7. 自己常用的C/C++小技巧
  8. 命令行怎么运行go程序_Go教程32: 编译打包运行程序
  9. python3编码(encode,decode)
  10. 谷歌图像识别 API
  11. 互联网黑暗森林法则:想活?别喘气儿!
  12. 2007年个人回忆与总结
  13. Android USB串口摄像头实现拍照与识别二维码
  14. python特征提取方法_大师兄的Python机器学习笔记:特征提取
  15. JAVA计算机毕业设计房屋中介网络平台Mybatis+系统+数据库+调试部署
  16. 图片怎么自定义裁剪?图片如何裁出想要的大小?
  17. Expat XML parser
  18. 深度学习-Word Embedding的详细理解(包含one-hot编码和cos余弦相似度)
  19. 计算机密码学学习笔记(二)——Shannon理论
  20. android源码 meizhi,74款安卓和IOS app源码地址

热门文章

  1. ReactJS入门之环境搭建以及编写HelloWorld程序
  2. ServletContext_功能_域对象
  3. Request_获取请求体数据
  4. mybatis和ehcache整合
  5. 并发调试和JDK8新特性
  6. goahead php,Goahead移植教程 | 学步园
  7. JAVA基本数据类型和String类型的转换
  8. c++随机打乱数组_NumPy数组基本介绍
  9. MAX13085E/MAX485 _中文翻译
  10. 逃离裁员:程序员在云时代的生存之道