I Hate It

HDOJ-1754

  1. 这道题是线段树简单的入门题,只是简单考察了线段树的基本使用,建树等操作。
  2. 这里需要注意的是输入要不使用scanf要不使用快速输入。
  3. 这里的maxs数组需要开大一点,4倍是最稳妥的,一定不会溢出。
  4. 区间查询的时候要注意if后不是之间使用else应该分开写,因为两个区间可能是相交的。
//单点更新,单点查询
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
const int maxn=200005;
const int INF=0X3F3F3F3F;
int n,m;
int maxs[maxn<<2];
int a[maxn];
void pushup(int id,int l,int r){
int lc=id<<1;
int rc=id<<1|1;
maxs[id]=max(maxs[lc],maxs[rc]);
}
void build(int id,int l,int r){
if(l==r){
maxs[id]=a[l];
return;
}
int lc=id<<1;
int rc=id<<1|1;
int mid=(l+r)>>1;
build(lc,l,mid);
build(rc,mid+1,r);
pushup(id,l,r);//向上维护
}
void update(int id,int l,int r,int p,int v){
if(l==r&&l==p){
maxs[id]=v;
return;
}
int mid=(l+r)>>1;
int lc=id<<1;
int rc=id<<1|1;
if(p<=mid){
update(lc,l,mid,p,v);
}else{
update(rc,mid+1,r,p,v);
}
pushup(id,l,r);
}
int query(int id,int l,int r,int p,int q){
int maxss=-INF;
if(p<=l&&q>=r){
return maxs[id];
}
int mid=(l+r)>>1;
if(p<=mid){
maxss=max(maxss,query(id<<1,l,mid,p,q));
}
if(q>mid){
maxss=max(maxss,query(id<<1|1,mid+1,r,p,q));
}
return maxss;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
while(cin>>n>>m){
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,1,n);
for(int i=0;i<m;i++){
char c;int a1,b1;
cin>>c>>a1>>b1;
if(c=='U'){//更新
update(1,1,n,a1,b1);
}else{//查询
cout<<query(1,1,n,a1,b1)<<endl;
}
}
}
return 0;
}

最新文章

  1. CSS属性小结之--半透明处理
  2. WPF中实现登陆窗口的“记住帐号”功能
  3. Python 获得对象内存占用内存大小 sys.getsizeof
  4. 异步加载JS的4种方式(详解)
  5. leetcode 149. Max Points on a Line --------- java
  6. Split字符串分割函数
  7. Android实现透明的颜色效果
  8. PHP读取Mongodb数据报错,Cannot natively represent the long 8331412483000 on this platform
  9. Ajax-jQuery实现
  10. 【AC自动机】专题总结
  11. $.each 和$(selector).each()的差别
  12. error C2440
  13. Sum It Up 广搜
  14. 笔记+R︱信用风险建模中神经网络激活函数与感知器简述
  15. Linux服务器查看外网IP地址的命令
  16. SSM框架主要几个注解的位置
  17. Python3快速入门
  18. JVM笔记10-性能优化之高级特性
  19. 两道SQL题目
  20. hadoop yarn组件介绍

热门文章

  1. Eclipse无法打开提示could not open jvm.cfg错误
  2. Superset 1.0.1发布——稳定版本
  3. 【原创】k8s之job和Cronjob
  4. Leetcode(102)-二叉树的层次遍历
  5. Linux 驱动框架---linux 驱动
  6. Windows中VS code无法查看C++ STL容器的值 - 解决方法
  7. CSS3 弹性盒子(Flex Box)
  8. fibonacci number &amp; fibonacci sequence
  9. iPhone 12 导入通讯录排序 Bug
  10. lightning &amp; web components &amp; templates &amp; slots