博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 1754
阅读量:5797 次
发布时间:2019-06-18

本文共 1744 字,大约阅读时间需要 5 分钟。

#include
#include
#define L(x) (x << 1)#define R(x) (x << 1|1)#define MAX 200000typedef struct{ int left; int right; int temp_max;}Node;Node node[3*MAX];int max;int getmax(int x,int y){ return x
> 1; build(l,mid,L(k)); build(mid+1,r,R(k));}void insert(int pos,int val,int k){ if(pos >= node[k].left && pos <= node[k].right) { node[k].temp_max = getmax(val,node[k].temp_max); } if(node[k].left == node[k].right) return ; if(pos < node[R(k)].left) insert(pos,val,L(k)); else insert(pos,val,R(k));}int get_result(int l,int r,int k){ if(l == node[k].left && r == node[k].right) { return max = node[k].temp_max; } if(node[k].left == node[k].right) return max; if(r < node[R(k)].left) get_result(l,r,L(k)); else if(l > node[L(k)].right) return get_result(l,r,R(k)); else return max = getmax(get_result(l,node[L(k)].right,L(k)),get_result(node[R(k)].left,r,R(k)));}int main(){ int n,m,i,j,k; char str[5]; while(~scanf("%d%d",&n,&m)) { build(1,n,1); memset(str,0,sizeof(str)); for(i = 1;i <= n;i ++) { scanf("%d",&j); insert(i,j,1); } for(i = 1;i <= m;i ++) { scanf("%s",str); if(!strcmp(str,"Q")) { max = 0; scanf("%d%d",&j,&k); get_result(j,k,1); printf("%d\n",max); } else { scanf("%d%d",&j,&k); insert(j,k,1); } memset(str,0,sizeof(str)); } } return 0;}

转载于:https://www.cnblogs.com/wangzhili/p/3950350.html

你可能感兴趣的文章
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
information_schema系列五(表,触发器,视图,存储过程和函数)
查看>>
瓜子二手车的谎言!
查看>>
[转]使用Git Submodule管理子模块
查看>>
DICOM简介
查看>>
Scrum之 Sprint计划会议
查看>>
List<T> to DataTable
查看>>
[Java]Socket和ServerSocket学习笔记
查看>>
stupid soso spider
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
Spring MVC EL表达式不能显示
查看>>