hdu_1754,线段树单点更新,求区间最值
2024-08-28 09:34:20
http://www.notonlysuccess.com/index.php/segment-tree-complete/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define maxn 2222222
using namespace std;
int a[maxn<<2];
void pushUp(int rt)
{
a[rt]=max(a[rt<<1],a[rt<<1|1]);
}
void build(int l,int r,int rt)
{
if(l==r)
{
scanf("%d",&a[rt]);
return ;
}
int m=(r+l)>>1;
build(lson);
build(rson);
pushUp(rt);
}
void update(int p,int sc,int l,int r,int rt)
{
if(l==r)
{
a[rt]=sc;
return;
}
int m=(l+r)>>1;
if(p<=m) update(p,sc,lson);
else update(p,sc,rson);
pushUp(rt);
}
int query(int L,int R,int l,int r,int rt)
{
int x=0;
if(L<=l&&r<=R)
return a[rt];
int m=(r+l)>>1;
if(L<=m) x=max(x,query(L,R,lson));
if(R>m) x=max(x,query(L,R,rson));
return x;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
build(1,n,1);
char c[2];
int d,e;
for(int i=0; i<m; i++)
{
scanf("%s%d%d",c,&d,&e);
if(c[0]=='Q')
{
printf("%d\n",query(d,e,1,n,1));
}
if(c[0]=='U')
{
update(d,e,1,n,1);
}
}
}
return 0;
}
最新文章
- jieba分词
- cookie以及cookie的作用
- #define is unsafe——I
- .net System.TypeInitializationException 类型初始值设定项引发异常
- centos6.2下搭建Web服务器
- 遗传算法GA
- Tomcat Server处理一个http请求过程
- IDEA插件和快捷设置
- java Servlet文件拷贝的模板代码
- 转载 AutoFac常见用法总结
- docker save 批量导出脚本
- Keepalived+Nginx高可用架构配置
- .NetCore 发布到 Centos docker
- BZOJ2648 SJY摆棋子(KD-Tree)
- Docker Dockerfile简述
- Javascript 面向对象-继承
- js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
- 深入了解 Session 与 Cookie
- 进程一些命令pstree,ps,pstack,top
- Appium Hybrid混合应用测试——Native切换WebView , 切换不了WebView (没有试过,先记录在此)