原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

线段树的模板题,详细的都写在代码里了

//不知道为什么定义单个字符,用%c输入会超时,换成字符数组和%s就过了

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
#include <cmath>
#define ll long long
#define pi 3.1415927
using namespace std;
int tree[],num[];
void build(int i ,int j, int k)
{
//建树,将1-n 2分分配给子节点,最后在给最终的节点赋值
if(j==k)
{
tree[i]=num[j];
return ;
}
int mid =(j+k)>>;
build(i<<,j,mid);
build(i<<|,mid+,k);
tree[i]=max(tree[i<<],tree[i<<|]);
}
void add(int i,int x, int j ,int k,int p)
{
//维护 从头寻找要改变的节点,找到后再依次返回父节点进行维护
if (j==k)
{
tree[i]=p;
return ;
}
int mid =(j+k)>>;
if(x<=mid)
add(i<<,x,j,mid,p);
else
add(i<<|,x,mid+,k,p);
tree[i]=max(tree[i<<],tree[i<<|]);
}
int finds(int i,int x, int y, int j, int k)
{
//查询 寻找符合要求的节点
if(x<=j && y>=k)
return tree[i];
int mid=(j+k)>>;
if(y<=mid)
return finds(i<<,x,y,j,mid);
else if(x>mid)
return finds(i<<|,x,y,mid+,k);
else
return max(finds(i<<,x,y,j,mid),finds(i<<|,x,y,mid+,k));
}
int main ()
{
int n,m,i,t,j,k,x,y;
char str[]; //这里不用字符数组不知道为什么莫名其妙的超时
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=;i<=n;++i)
scanf("%d",&num[i]);
build(,,n);
while(m--)
{
scanf("%s %d %d",str,&x,&y);
if(str[]=='Q'){
t=finds(,x,y,,n);
printf("%d\n",t);
}
else if (str[]=='U')
add(,x,,n,y);
}
}
return ;
}

最新文章

  1. 【转】Java面试题全集2.2(上)
  2. php-sql-parser sql防注入脚本
  3. [USACO2009 NOV GOLD]奶牛的图片
  4. java基础知识回顾之java Thread类学习(十二)-- 线程中断
  5. 使用 IL 实现类型转换
  6. ActionController::InvalidAuthenticityToken 解决办法(第二种尤其有效)
  7. 修改Input中Placeholder默认提示颜色(兼容)
  8. 使用netcat进行反弹链接的shellcode
  9. ltt.js
  10. 理解 MEF
  11. VMware 虚拟机(linux)增加根目录磁盘空间 转自
  12. ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)
  13. iconfont 使用
  14. 还在用Json完成Ajax,改用Beetl吧
  15. 迅为iTOP-4418/6818开发板-驱动-实现GPIO扩展
  16. C# - LINQ 表达式树
  17. STM32串口空闲中断
  18. Linux环境下虚拟环境virtualenv安装和使用
  19. Unity Ragdoll 实现死亡效果 心得+坑点总结
  20. Lerning Entity Framework 6 ------ Complex types

热门文章

  1. 调用存储过程取到数据通过NPOI存到Excel中
  2. 原来腾迅的QQ号竟然是个int变量
  3. ubuntu卸载node和npm
  4. python中的OrderedDict
  5. Android开发 如何最优的在Activity里释放资源
  6. 如何设置树莓派 VNC 的分辨率
  7. leetcode-50-pow()
  8. python 使用字符串
  9. kubernetes配置(kubeconfig)对多集群的访问
  10. BCB编写DLL终极手册